Matlab基础
第一章
- Matlab的文件擴展名為.m,也叫M文件
- Matlab一行寫不開使用續航符,行末加“ ”后加“…”,即可在下一行繼續輸入
- 查看歷史命令:在布局里的歷史命令,或者命令窗口按↑
- Matlab命令窗口運行的所有命令都共享一個工作空間,共享所有的變量
幫助命令
- which bode,顯示bode的位置
- lookfor bode,顯示所有與bode有關的函數信息
- 想了解某個目錄下有多少函數,what(‘目錄’)
- help bode,顯示bode函數的用法
第二章
運算符
加法和乘法
- 數組定義X=[2 3;4 5;6 7]; 3*2的矩陣
- 矩陣加減運算:兩個矩陣是同維矩陣
- 矩陣乘法運算:X*Y要滿足矩陣乘法的條件
- 矩陣數組乘法:兩個矩陣相應元素相乘
- 矩陣乘方運算:
- x^Y: x為數,Y為方陣,結果由各特征值和特征向量計算得到
- X^y: 如果X是方陣、y是一個大于1的整數,所得結果由X重復相乘y次得到;如果y不是整數,則將計算各特征值和特征向量的乘方。
- 如果X和Y都是矩陣,或X或Y不是方陣,則會顯示錯誤信息。
- 矩陣數組乘方:X.^Y結果為X中的元素對Y對應的元素求冪,得到矩陣與原維數相同
- 張量積:K=KRON(A,B)
除法
- 矩陣左除:X=A\B是方程AX=B的解
- 矩陣右除:X=B/A是方程XA=B的解
- 矩陣點除:對每個元素除法,得到矩陣與原維數相同
操作符
- A(:,i)取A矩陣的第i列
- A(i,:)取A矩陣的第i行
- A(:,:)以A的所有元素構造二維矩陣,如果A是二維矩陣,則結果就等于A
- A(:)以A的所有元素構造一個列向量
- 如果此操作符在賦值語句的左邊,則用右邊矩陣的元素來填充矩陣A,矩陣A的結構不變,但要求兩邊矩陣的元素個數相同,否則會出錯
數據格式顯示
關系運算符
- 函數gt(A,B)判斷A是否大于B
- 函數lt(A,B)判斷A是否小于B
- 函數ge(A,B)判斷A是否大于等于B
- 函數le(A,B)判斷A是否小于等于B
- 函數eq(A,B)判斷A是否等于B
- 函數ne(A,B)判斷A是否不等于B
邏輯運算符
- &:與,|:或,~:非,xor:異或
- M文件:and(A,B),or(A,B),not(A,B)
邏輯函數
數值數據類型
- 復數:
- real函數計算復數實部
- imag函數計算復數虛部
- abs函數計算復數的模
- angle函數以弧度為單位給出復數的幅角arctan b/a
第三章
一維數組的創建
- 直接輸入法:直接通過空格、逗號等分隔數組元素
- 步長生成法:x=a:inc:b,a是起始數值,b是終止數值,inc是步長
- 等間距線性生成法:x=linspace(a,b,n),a是起始數值,b是終止數值,n是中間數據點個數
- 等間距對數生成法:x=logspace(a,b,n),a是起始數值,b是終止數值,數據值采用對數計算
一維數組的訪問
- 元素的索引:x(4),x(4:6),x(4:end),x([1 5 3 4 2])是按[]里的順序顯示數組元素
多維數組的創建
- 直接輸入數組的元素創造,不同行元素用;隔開
- 通過Matlab的Array Editor來輸入二維數組
- 使用數據表格的方式輸入
常用標準數組
- eye 單位矩陣
- ones 全一數組
- rand 隨機數組,數組元素均勻分布
- randn 隨機數組,元素服從正態分布
- zeros 生成全0數組
其他
- sort函數用于排序
- find函數用于搜索子數組
數組處理函數
- fliplr 以數組的重直中線為對稱軸,交換左右對對稱位置的數相元素
- flipud 以數組的水平中線為對標軸,交換上下對稱位置上的數組元素
- rot90 按逆時針對數組進行旋轉
- circshift 循環移動數組的一行或一列
- reshape 結構變換函數,交換前后函數的元素個數相等
- diag 對角線元素提取函數
- triu 保留方陣的上三角,構成上對角方陣
- tril 保留方陣的下三角,構成下對角方陣
- kronecker 兩個數組的kronecker乘法,構成新的數組
- repmat 數組復制生成函數
第四章
極限、導數、微分
- 極限:limit函數
- 導數 diff函數
- 近似梯度 gradient函數
積分
- 矩形求積:cumsum函數
- 梯形求積:trapz函數
- 自適應法:quad函數和quadl函數,二元函數求積分,dblquad函數
化簡、提取、替換代入
化簡
- pretty 將式子轉化為手寫格式
- collect 降冪排列法
- expand 展開法
- horner 重疊法
- factor 因式分解法
代入
- 代入替換 subs
級數求和
- symsum函數
泰勒、傅里葉級數展開
- taylor函數
做題用到的
- 多項式次數排列寫出系數,然后用poly2str(p,‘x’),看看函數是否正確,roots§,解出函數
- 求多項式解,syms x,y=(x-1)*(x-2),subs(y,x,8),即可解出x=8的y值
- 多項式乘法,p1=[1 2 3] p2=[3 4 5],conv(p1,p2),poly2str即可得出
- 多項式除法,deconv
- 部分分式展開,residue
- 積分:cumsum,微分:diff
第五章
字符串操作
- 聲明變量:s=‘字符串’,建立字符串矩陣時,每行字符串元素的個數可以不同,但是每行的字符的總數必須相同
- whos命令查看字符串屬性
字符串通用函數
基礎函數
- string函數 將整數數組轉換為字符串
- char函數 將ASCII碼轉換為字符串
- abs函數 將字符串轉換為ASCII碼
- double函數 將符號矩陣或字符串轉化為浮點數
- blanks函數 輸出空格數
- upper函數 將小寫字母轉換為大寫 lower函數 將大寫轉換為小寫
- eval函數 將字符串作為命令執行
比較函數
- strcmp函數 字符串比較
- strmatch函數 字符串匹配
- strfind函數 字符串中查找子串
- strrep函數 字符串替換
- strtok函數 得到指定字符串
- isletter函數 判斷串中元素是否為字母
- isspace函數 判斷串中元素是否為空格
字符串與數值間相互轉換
- int2str函數 整數轉換為字符串
- num2str函數 浮點轉換為字符串
- str2num函數 字符串轉換為浮點
進制轉換
- dec2hex函數 十進制轉換十六進制字符串
- hex2dec函數 十六進制字符串轉換十進制
- hex2num函數 十六進制字符串轉換浮點數
- dec2bin函數 十進制轉換二進制字符串
單元數組與結構體
單元數組
單元數組的創建與訪問
- 單元中的數據可以為任何類型,數值數組、字符、符號對象、其他單元數組、結構體
- 創建:
- 直接創建:A(1,1)={[1;2;3]}或A{1,1}=[1;2;3],在A的第一行第一列創建了個矩陣
- 分配內存:C=cell(2,3)一共分配六個位置,C(2,3)={[1 2;2 3;3 4]}
- 索引:A(1,1)只會顯示內容一部分,A{1,1}將內容全顯示出來
- 形狀:reshape
單元數組函數
- cell 生成一個空的單元數組,然后再向其中添加數據
- celldisp 顯示單元數組的所有單元的內容
- iscell 判斷是否為單元數組
- isa 判斷輸入是否為指定類的對象
- deal 將多個單元的數據取出來后賦予一個獨立的單元數組變量
- cellfun 將一個指定的函數應用到一個單元數組的所有單元
- num2cell 從一個數組中提取指定元素,填充到單元數組
- size 獲取數組的維數大小數值
結構體
創建
- 直接賦值:A(1).name = ‘nihao’ A(2).name = ‘buhao’
- struct函數:A = struct(‘name’,{‘nihao’ ‘buhao’}) 先是字段,然后是值
訪問
- A(1).name or A(2).name
結構體函數
- -getfield 獲取多個結構體數組元素的值
- cat 提取結構體數據后依次排序
- deal 提取多個元素的數值賦子不同的變量,或對結構體字段賦值
- fieldnames 返回結構體的字段名
- isfield 判斷一個字段名是否為指定結構體中的字段名
- isstruct 和class一樣,判斷一個變量是否為結構體變量,輸出邏輯值
- rmfield 刪除結構體的字段
- orderfield 對結構體的字段進行排序
第六章
M和P文件
- M文件由函數定義行、幫助信息行、幫助文件文本、函數體構成。
- M文件名要以字母開頭,最好不要與內置函數重名
- P文件是對應M文件的預解析版本
M函數文件
-
必須以關鍵字function語句引導
-
文件名要以字母開頭
-
保存的文件名必須與函數名字相同
-
返回參數多于一個要用 [] 括起來,輸入參數無論幾個要用()
-
函數輸入和返回參數實際個數分別由內部保留變量nargin和nargout給出
function [outputArg1,outputArg2] = test(inputArg1,inputArg2)%UNTITLED2 此處顯示有關此函數的摘要% 此處顯示詳細說明if nargin ~= 2 %不等于變成這樣了error('輸入字符過少') %要打印的錯誤提示endoutputArg1 = inputArg1;outputArg2 = inputArg2;end
M腳本文件
- 腳本文件沒有函數定義行,且一般也沒有注釋信息
- 當想把腳本文件轉換為函數文件時,只需要再前面添加函數定義行和注釋即可
腳本和函數區別
- 腳本:不接收輸入參數,也不返回輸出參數。 函數:接收輸入參數,也可以返回參數。
- 腳本:處理工作空間中的變量。 函數:默認內部變量為局部變量,工作區間不能訪問。
- 腳本:常用于需多次執行的一系列命令。 函數:常用于需多次執行且需要輸入/輸出參數的命令集合。
- 理解:腳本就是void name(void),函數是int name(int,int)
文件讀取
- 當你把文件放到自定義的目錄中時,要更改Matlab的工作路徑或添加Matlab的搜索路徑
P文件及操作
- 優點:看不到你的源代碼,運行速度快
- 使用:pcode命令
變量
- 局部變量:函數內的就是局部變量
- 全局變量:不同工作空間可以被共享的變量。要用global對具體變量修飾。在調用處也要用global修飾變量名
- 永久變量:
- 只能在函數內部定義
- 該變量從屬函數才能訪問該變量
- 函數結束,該變量值保留在內存里,類似static
- 使用persistent修飾變量名
運算關系和符號
- 算數運算符:+ 加、- 減、* 乘、.* 點乘、/ 除、./ 點除、\ 左除、. 點左除、^ 乘方、.^ 數組乘方、’ 共軛轉置、.’ 轉置
- 關系運算:<、<=、>、>=、==、~=
- 邏輯運算:& 與、| 或、~ 非
常見函數
- eval 具有對字符串表達式計算的能力
- feval 具有對函數句柄進行操作的能力
數據流結構
if語句
-
if…end
if 邏輯表達式執行語句end -
if…else…end
-
if…elseif…else…end
if 邏輯表達式1執行語句1elseif 邏輯表達式2執行語句2elseif 邏輯表達式3執行語句3else執行語句4end
switch語句
switch 表達式case 條件語句1執行語句1case 條件語句2執行語句2otherwise執行語句3 endfor循環
for 循環變量=表達式1:表達式2:表達式3循環體 end- 表達式1是循環變量的起點,表達式2是循環變量前進的步長,表達式3是最終的界限
while循環
while 表達式執行語句 end- 與c語言的while基本一樣
try-catch容錯結構
trystatement...statement catchstatement...statement end- 程序執行時,首先執行try后面的代碼,如果try和catch之間代碼執行沒有錯誤,則程序通過,不執行catch后面的語句。
- 如果執行發生錯誤,轉而執行catch后面的語句。
- Matlab提供了lasterr函數,可以獲取出錯信息,顯示錯誤:disp(lasterr)放到catch里
- echo file on:顯示文件名為file的M文件的執行語句
- echo file off:不顯示文件名為file的M文件的執行語句
控制命令(continue、break、return、pause)
- continue和break語句,和C中的功能一樣
- return和pause語句
- return命令可以使正在執行的函數正常退出,返回調用他的函數,和C中功能一樣
- pause命令用于暫停程序,然后等待用戶按下任意鍵繼續運行
- pause:暫停程序,等待用戶按任意鍵
- pause(n):使程序終止n秒,n為非負實數
- pause on:允許后續的pause命令暫時中止程序程序
- pause off:使后續的pause命令變得無效
input和keyboard命令
- input指令:提示用戶輸入參數,按回車傳入參數。
- 類似于python的input
- num = input(‘請輸入數字’,‘s’),'s’是將用戶輸入的東西作為字符串傳給變量
- keyboard指令:停止程序的執行,并把控制權交給鍵盤,當執行該指令時,會顯示提示符,等待輸入
- 當輸入return并按下回車,控制權在交給程序
- input指令和keyboard指令功能類似,不同的是,input指令只允許輸入變量的值,而keyboard指令卻可以輸入多行Matlab指令
error和warning指令
- error指令用來指示出錯信息并終止程序執行
- error(‘程序出錯’),顯示程序出錯,并終止程序
- warning指令作用是顯示警告信息,但不終止程序
- warning(‘程序警告’),顯示程序警告
第七章、
字符型和符號型變量區別
- 字符型變量就是字符和字符串
- 符號型變量就是變量,你想用還不知道賦什么值,就可以創建個符號變量
符號型變量
- 使用syms函數定義符號變量,執行完后就存在于工作空間了,可以使用whos查看
- findsym用于尋找表達式中哪些是符號變量
- digits函數設定所用數值的精度
- 單獨使用digits,顯示當前設定的數值精度
- digits(A),將數值精度設置為A位
- d = digits,d為設定精度
- vpa函數進行可控精度運算
- vpa(S),符號表達S顯示當前精度下的值,精度是digits設定的
- vpa(S,D),符號表達S顯示精度D下的值,D是臨時設定的
- 數值型變量和符號型變量的轉換:sym(變量,‘r’) 'r’有理數,'f’浮點數,'e’指數形式,'d’數值精度形式
符號表達式和方程創建
%符號表達式 syms a b c x g=sym(a*x^2+b*x+c) %這里我試著g=a*x^2+b*x+c直接寫也可以 f=g^2-g*3+4- 符號方程就是函數和等號組成的等式,g= ax^2+bx+c==0 或者 g= str2sym(‘ax^2+bx+c=0’)
符號表達式的操作
- finverse函數,finverse(f)用于單一變量,finverse(f,v)用于多變量
- f=cos(x/t),f=cos(g(z)/t)
符號矩陣創建
- 直接創建:sym([a* x^2;b*x;c])
- 數值矩陣轉換為符號:sym([1 2 3;4 5 6;7 8 9])
符號矩陣的運算
- 四則運算:+ - * / \
- A’ 共軛轉置,A.’ 矩陣轉置
- A^B 矩陣冪運算 A.^B 數值冪運算
- 矩陣的秩:rank函數
- 矩陣的逆:inv函數
- 矩陣的行列式:det函數
- 矩陣的特征根:eig函數
符號微積分
- 符號極限:limit
- 求導:diff函數,
- diff(f,n)對f求n階導(默認自變量),
- diff(f,y)對f有多個變量,對y求偏導
- 積分:int函數,
- int(S,v),對s中的v求積分,求得的只是其中一個原函數,
- int(S,v,a,b),對v在a到b上求定積分
符號積分變換
- Fourier變換:fourier函數 這些三個函數前面加i就是逆變換
- Laplace變換:laplace函數
- Z變換:ztrans函數
符號代數方程求解
- solve(s):求解符號表達式s的代數方程,求解變量為默認變量
- solve(s,v):求解符號表達式s的代數方程,求解變量為v.
- soleve(s1,s2…sn,v1,v2…vn).求解符號表達式s1,s2…sn組成的代數方程組,求解變量分別為v1,v2…vn
微分方程求解
- dsolve函數
圖示化符號函數計算器
- 在命令行輸入funtool將會生成窗口
輸入
- “f=”文本框顯示代表函數f的符號表達式,它的默認值是x,用戶可以在該行輸入其他有效的表達式來定義f,再按Enter鍵,即可在顯示圖形窗口1中繪出圖形。
- “g=”文本框顯示代表函數g的符號表達式,它的默認值是1,用戶可以在該行輸入其他有效的表達式來定義g,再按Enter鍵,即可在顯示圖形窗口2中繪出圖形。
- “x=”文本框顯示用于函數f與g的繪制區間,它的默認值為[-2π<s<2π,-2π<t<2π]
- “a="文本框顯示-個用于改變函數f的常量因子,它的默認值為1/2,用戶可以在該行輸入不同的常數
控制按鈕
- df/dx:函數f的導數
- int f:函數f的積分
- simple f:化簡函數f(若有可能)
- num f:函數f的分子
- den f:函數f的分母
- 1/f:函數f的倒數
- fim:函數f的反函數
- f+a等等這些就是字面含義,f=f+a
- g=f:用函數f代替函數g
- swap:函數f和函數g互換
最后一行
- Insert:將函數f(x)保存到函數內存列表中的最后
- Cycle:用內存函數列表中的第二項代替函數f(x)
- Delete:從內存函數列表中刪除函數f(x)
- Reset:重新設置計算器為初始狀態
- Help:顯示在線的關于計算器的幫助
- Demo:運行該計算器的演示程序
- Close:關閉計算器的三個窗口
圖形繪制
- 創建圖形窗口
- figure(n):創建對應n的句柄窗口
- g=figure(…):返回圖形窗口對象的句柄
- 設置窗口屬性
- 打開查看里的屬性編輯器
- get函數返回窗口屬性,set設置屬性
- 菜單欄:
繪圖
x=0:0.05*pi:2*pi y1=sin(x);y2=cos(x) plot(x,y1,'y*',x,y2,'c+')- subplot可以當當前窗口分割成多個子圖
圖形注釋
- 坐標軸注釋:xlabel、ylabel、zlabel函數
- 圖形標題注釋:title函數
- 圖形注釋:legend函數
- 添加文本字符串:text函數,gtext函數可以與鼠標交互
特殊繪圖函數
第九章
- 每創建一個圖像,都會為該對象分配一個句柄
- 獲取圖像句柄,句柄是圖像對象的唯一標識符
- gcf 獲得當前圖形對象的句柄
- gco 獲得當前對象的句柄
- gca 獲得當前坐標軸對象的句柄
- gcbf 獲得當前正在執行調用的圖形對象的句柄
- gcbo 獲得當前正在執行調用的對象的句柄
- findobj 按照指定的屬性來獲取圖形對象的句柄
Simulink
File菜單
- New 建立模型(Model)或庫(Library)
- Open 打開一個模型
- Close 關閉一個模型
- Save 保存模型
- Save as 將模型另存為
- Model Properties 打開“模型屬性”對話框
- Preferences 打開“模型參數設置”對話框,例如用戶界面的顯示形式,如顏色、字體等
- Source control 設置Simulink和SCS的接口
- Print 打印模型或模塊圖標到一個文件
- Print Details 生成HTML格式的模型報告文件,包括模塊的圖標和模塊參數的設置等
- Print Setup 打印模型或模塊圖標
- Exit Matlab 退出Matlab
Edit菜單
- Copy Model to Cipoard 把模型當圖片拷貝下來
- Explore 打開模型瀏覽器,當有模型被選中時才可用
- Block Properties 打開模塊屬性對話框,當有模塊被選中時才可用
- Parameters 打開模塊參數設置對話框,當有模塊被選中時才可用
- Create Subsystem 創建子系統,當有模塊被選中時才可用
- Mask Subsystem 封裝子系統,當有模塊被選中時才可用
- Look under Mask 查看子系統內部構成,當有子系統被選中時才可用
- Signal Properties 設置信號屬性,當有信號被選中時才可用
- Edit Mask 編輯封裝,當有子系統被選中時才可用
- Subsystem Parameters 打開子系統參數設置對話框,當有子系統被選中時才可用
- Mask Parameters 封裝好的子系統的參數設置,當有被封裝的子系統被選中時才可用
View菜單
- Block Data Tips Options 用于設定在鼠標指針移到某一模塊時是否顯示模塊的相關提示信息
- Library Browser 打開模型庫瀏覽器
- Port Values 設置通過鼠標操作來顯示模塊端口當前值的方式
- Model Explorer 打開模型資源管理器,將模塊的參數設置、仿真參數設置以及解法器選擇、模塊的各種信息等集成到一個界面來設置
Simulation菜單
- Start 開始運行仿真
- Stop 停止仿真
- Configuration Parameters 設置仿真參數和選擇解法器
- Normal 標準仿真模式
- Accelerator 加速仿真模式
- External 外部工作模式
Format菜單
- Flip Name 翻轉模塊的名字
- Flip Block 翻轉模塊的圖標
- Rotate Block 旋轉模塊的圖標
- Show Drop Shadow 給模塊添加陰影
- Port/Signal Displays 顯示端口的信號的相關信息,其中Sample Time Colors 選項根據模塊的采樣時間來設置不同的顯示顏色
- Block Displays 顯示模塊相關信息,其中Sorted Order選項顯示模塊的優先級
Tools菜單
- Simulink Debugger 打開調試器功能
- Fixed-Point Settings 打開定點設置對話框
- Model Advisor 打開模型分析器對話框,幫助用戶檢查和分析模型的配置
- Lookup Table Editor 打開查表編輯器,幫助用戶檢查并修改模型中的lookup table模塊的參數
- Data Class Designer 打開數據類設計器,幫助用戶創建Simulink類的子類
- Bus Editor 打開總線編輯器,幫助用戶修改模型中總線對象的屬性
- Profiler 選中此菜單后,當仿真運行結束后會自動生成并彈出一個仿真報告文件
- Coverage Settings 設置在仿真結束后給出仿真過程中有關coverage data的一個HTML格式報告文件
- Signal& Scope Manager 打開信號和示波器的管理器,幫助用戶創建各種類型的信號生成模塊和示波器模塊
- Real-Time WorkShop 將模塊轉換為實時可執行的C代碼
- External Mode Control Panel 打開外部模式控制板,用于設置外部模式的各種特性
- Control Design 用于打開Control and Estimation Tools Manager和Simlink Model Discretizer對話框
- Parameter Estimation 用以打開Control and Estimation Tools Manager窗口
- Report Gencrator 用于打開報告生成器
Help菜單
- Using Simulink 顯示在Simulink幫助部分
- Blocks 打開Matlab的幫助,當前顯示在按字母排序的Blocks幫助部分
- Blocksets 打開按應用方向分類的幫助
- Block Support Table 打開模型所支持的數據類型幫助文件
- Shortcuts 打開Matlab的幫助,當前顯示在鼠標和鍵盤快捷鍵設置的幫助部分
- S-Function 打開Matlab的幫助,當前顯示在S-函數的幫助部分
- Demos 打開Matlab 的幫助,當前顯示在Demos頁的幫助部分,通過它可以打開許多有用的演示示例
- About Simulink 顯示Simulink的版本
文件
低級文件命令
- fpoen 打開文件
- fclose 關閉文件
- feof 測試文件結束
- ferror 查詢文件I/O的錯誤狀態
- fgetl 讀文件的行,忽略換行符
- fgets 讀文件的行,包括換行符
- fprintf 把格式化數據寫到文件或屏幕上
- frewind 返回到文件開始
- fscanf 讀取文本文件中的數據
- fseek 設置文件位置指示符
- ftell 獲取文件位置指示符
- fread 從文件中讀二進制數據
- fwrite 把二進制數據寫到文件里
總結
- 上一篇: UG背景颜色修改和截图
- 下一篇: 用construct2做一个酷炫到爆炸的