天天看點

數學模組化——基礎

目錄

​​第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. 全零陣生成
  2. 機關陣生成
  3. 全1陣生成
  4. 均勻分布随機矩陣生成
  5. 正态分布随機矩陣生成
  6. 産生随機排列
  7. 産生線性等分向量
  8. 産生對數等分向量
  9. 産生以輸入元素為對角線元素的矩陣
  10. 友矩陣的生成
  11. hadamard矩陣生成
  12. Hankel方陣生成
  13. Hibert矩陣生成
  14. 逆Hibert矩陣生成
  15. Magic矩陣生成
  16. pascal矩陣生成
  17. 拓普利茲矩陣生成
  18. 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.函數檔案的建立和調用

  1. 建立 “函數”,并編寫函數内容,儲存時為函數命名(注意不要與已知函數沖突,函數檔案将在路徑中顯示)
  2. 在指令行視窗可直接調用此函數
數學模組化——基礎
數學模組化——基礎
數學模組化——基礎

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.二維插值函數

數學模組化——基礎

繼續閱讀