目錄
第1章 MATLAB基礎知識
1,矩陣的表示
1,數值矩陣的生成
2,符号矩陣的生成
3,特殊矩陣生成
4,一般矩陣運算
5,基本圖形繪制
6,簡單圖像處理
7,建立函數檔案/.M檔案
8,常用數值拟合
9,常用資料插值
(文章主體内容來自"《MATLAB數學模組化經典案例實戰》#餘勝威 編著#清華大學出版社",發此文目的是梳理相關知識點,記錄學習過程)
第1章 MATLAB基礎知識
1,矩陣的表示
矩陣與向量相同,用來描述一個問題的方程組的系數,由方程組的系數和常數構成的方陣。
矩陣包括:數值,符号,特殊矩陣等三種基本樣式
1,數值矩陣的生成
MATLAB強大功能之一:直接處理向量或矩陣
實數值矩陣輸入

複數矩陣輸入
2,符号矩陣的生成
1,用sym定義矩陣(實際是在定義符号表達式,符号矩陣中的元素可以是任意符号或是表達式,且長度無限制,隻是将方括号置于用于建立符号表達式的單引号中)
2,用指令syms定義矩陣
3,數值矩陣轉換為符号矩陣
一般情況下,矩陣是浮點型變量儲存。針對本例,将矩陣轉化成符号矩陣後,都将以最接近原值的有理數形式表示,或是函數形式表示
3,特殊矩陣生成
- 全零陣生成
- 機關陣生成
- 全1陣生成
- 均勻分布随機矩陣生成
- 正态分布随機矩陣生成
- 産生随機排列
- 産生線性等分向量
- 産生對數等分向量
- 産生以輸入元素為對角線元素的矩陣
- 友矩陣的生成
- hadamard矩陣生成
- Hankel方陣生成
- Hibert矩陣生成
- 逆Hibert矩陣生成
- Magic矩陣生成
- pascal矩陣生成
- 拓普利茲矩陣生成
- Wilkinson特征值測試陣的生成
4,一般矩陣運算
5,基本圖形繪制
- t:t從0開始,以π/50為一步,到4π為止,就是t的取值為0,π/50,2*π/50,3*π/50,4*π/50......4π
- .*:點乘,非矩陣乘法的一種乘法,每個對應元素分别相乘
- plot(t,y,t,y0,t,-y0):顯示三條曲線
- 在matlab的指令視窗輸入:X=linspace(1,100),将産生從1到100步長為1的數組。類似于在指令視窗中輸入:X=[1:100]
- 在指令視窗中輸入:X=linspace(5,100,20),将輸出:X =5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100
- 注意多個數值做乘除運算時要用點乘(.*),直接用乘(*)則報錯
- .*需要A、B的行列相等,而*的必要條件則是A的列數==B的行數
- .^是矩陣中各數值分别平方,^是矩陣自身乘以矩陣自身
- subplot(m,n,p)或者subplot(m n p):m表示是圖排成m行,n表示圖排成n列,也就是整個figure中有n個圖是排成一行的,一共m行,如果m=2就是表示2行圖。p表示圖所在的位置,p=1表示從左到右從上到下的第一個位置。
- axis([XMIN XMAX YMIN YMAX])二維坐标系下坐标範圍
- V = axis,傳回目前坐标範圍參數,二維坐标 四個元素
- plot(x,y,'linewidth',2): 線條粗細
- meshgrid(x,y,z):meshgrid是生成網格的函數,一般是生成二維網格矩陣資料,但這裡生成的是三維網格矩陣資料。以二維為例,指令:[X,Y]=meshgrid(x,y),生成的X就是采樣點的橫坐标,Y是其縱坐标
- slice(X,Y,Z,V,XI,YI,ZI) 沿着由矩陣XI、YI與ZI定義的曲面畫穿過超立體圖形V的切片。
6,簡單圖像處理
- 素材放在圖中所标記位置
- R=obj(:,:,1)......:把圖像中紅、綠、藍三色的資料分别存儲到矩陣R、G和B中
-
數學模組化——基礎
7,建立函數檔案/.M檔案
函數檔案
定義
- 可以是MATLAB工具箱中的函數,直接被使用者調用
- 也可以是使用者自己書寫的,可間接調用
- 也可添加到工作路徑下,供使用者調用
作用
- 可反複調用
- 節約代碼空間
- 使結構清晰
- 很重要
常用的函數檔案
- function y = abc(x);
- abc:使用者定義函數
- x:輸入 y:回報值
函數句柄
- fhandle = @function name
- eg. trig_f = @sin 或 sqr = @(x)x.^2
eg. 函數句柄的建立調用
eg.函數檔案的建立和調用
- 建立 “函數”,并編寫函數内容,儲存時為函數命名(注意不要與已知函數沖突,函數檔案将在路徑中顯示)
- 在指令行視窗可直接調用此函數
8,常用數值拟合
最簡單的線性最小二乘法拟合
- 從實驗資料中拟合函數關系y=f(x),标準是使 (f(xi) - yi)^2取極小值
- MATLAB中可用函數polyfit函數對資料進行拟合。調用格式:P = polyfit(x , y , N) 意義:用N次多項式拟合資料點 [ xi , yi]
eg.以一次,二次,三次多項式拟合以下資料
表1-2 資料
x | 0.5 | 1.0 | 1.5 | 2.0 | 2.5 | 3.0 |
y | 1.75 | 2.45 | 3.81 | 4.80 | 7.00 | 8.60 |
- hold on:hold on 和hold off,是相對使用的前者的意思是,你在目前圖的軸(坐标系)中畫了一幅圖,再畫另一幅圖時,原來的圖還在,與新圖共存,都看得到,後者表達的是,你在目前圖的軸(坐标系)中畫了一幅圖,此時,狀态是hold off,則再畫另一幅圖時,原來的圖就看不到了,在軸上繪制的是新圖,原圖被替換了(參考自@荪荪【Matlab中hold on與hold off的用法】)
- plot函數:單引号内的是線的類型以及顔色,如上圖
9,常用資料插值
插值
- 求函數近似值的方法。針對某個x,用已知的xi與f(xi)組合生成f(x)。
- 最簡單插值法:多項式插值法
- MATLAB可利用提供的插值函數,或程式設計實作資料的插值
- 一進制插值函數interp1的文法格式
y = interp1(x , Y, xi) | 由已知點集(x,Y)插值計算xi上函數值y |
y = interp1(Y, xi) | 相當于x=1:length(Y)的interp1(x, Y, xi) |
y = interp1(x, Y, xi, method) | 用指定方法計算xi對應的y |
y = interp1(x, Y, xi, method, 'extrap') | 超出已知點集的插值點用指定方法計算函數值 |
y = interp1(x, Y, xi, method, extrapval) | 用指定方法計算插值,超出已知點集處函數值取extrapval |
pp = interp1(x, Y, method, 'pp') | 用指定方法進行插值,但結果為分段多項式 |
- eg.已知x, y初始矩陣值,利用interp1的不同插值算法求xi[1 : 0.3 : 17]時各點的函數近似值
-
數學模組化——基礎 -
數學模組化——基礎
二維插值
- 類似于一維插值,但插值方法隻有三種:‘nearest’,'linear'(預設),‘cubic’
- 已知資料點集必須是栅格格式,一般用meshgrid函數産生
- interp2函數要求(X,Y)必須嚴格單調
- interp2函數輸入中,若已知點集(X,Y)在平面上不等間距時,函數将通過一定的變換将其轉換為等間距的
- 若輸入點集已經是等間距分布的話,可以在method參數前加星号(*),eg.'*cubic'。可提高插值速度
eg.二維插值函數