matlab學習筆記(基礎)
開頭第一段
怎麼講,學matlab的當前目標是看懂別人的matlab程式碼,所以先跳過前面一堆命令列,看看matlab程式碼是個什麼。
這一塊內容也是我自己一邊看書一邊寫,所以內容會不斷增加的。寫的不好不要罵我,但可以隨便講我,哈哈。估計也沒太多人看,畢竟很基礎的東西。
MATLAB程式
說明
首先,一個用文字形式儲存的matlab程式碼有兩種形式:matlab指令碼和matlab函式,他們的副檔名都是.m。
指令碼和函式相對於命令列的優點我就不說了……因為詳細說我感覺很腦殘……
建立
其次,建立方法是–>File|New|script(指令碼)/Function(函式)。
建立好程式,那就要步入正題了,一個matlab程式應該怎麼寫,裡面一堆函式怎麼用,開始吧。
編寫
1、註釋
%註釋文字
註釋個是很簡單格式。主要需要注意的就是註釋的編碼風格,要適當的編寫註釋以方便以後的閱讀。
2、控制輸入輸出
matlab提供了很多輸入輸出命令。
命令 | 說明 |
---|---|
disp(A) | 顯示陣列A的內容 |
disp(‘text’) | 顯示”內的文字串 |
format | 控制螢幕輸出的顯示格式 |
fprintf | 執行格式化的寫入到螢幕或檔案 |
x=input(‘text’) | 顯示”內文字,等待使用者輸入,並將輸入值賦值給x |
x=input(‘text’,’s’) | 顯示”內文字,等待使用者輸入,並將輸入值作為字串賦值給x |
k=menu(‘title’,’option1’,’option2’,…) | 顯示選單,名稱為title,選項是option1,option2,… |
3、邏輯與關係
一段程式基本結構,分支、迴圈,那要構造這些結構,首先要了解邏輯變數和關係運算符。
1關係運算符
什麼鬼
關係運算符 | 含義 |
---|---|
< | 小於 |
> | 大於 |
== | 等於 |
~= | 不等於 PAY ATTENTION:這裡和其他語言不太一樣 |
2邏輯類和邏輯類建構函式
類名稱:logical
建構函式:logical(A),其中A是一個數值陣列
PS:A中任何非0數將會賦值為邏輯1
3邏輯運算子和函式
邏輯運算子
運算子 | 含義 | 說明 |
---|---|---|
~ | 非 | 這個不說了 |
& | 與 | 與運算,兩個陣列與,得到新的邏輯陣列 |
| | 或 | 或運算 |
&& | 短路邏輯與 | 邏輯與,A&&B,則AB都真時為真,否則為假 |
|| | 短路邏輯或 | 邏輯或,A||B,AB都假則為假,否則為真 |
邏輯函式
邏輯函式 | 含義 |
---|---|
all(x) | 返回標量 向量x中所有元素都非零,則標量為1,否則為0 |
all(A) | 返回一個行向量 把A的每一列視為x,即同上 |
any(x) | 返回標量 向量x中有任意非零元素,返回1,否則返回0 |
any(A) | 返回一個行向量 把A的每一列視為x,即同上 |
find(A) | 返回一個行向量 包含A中非零向量的索引 |
[u,v,w]=find(A) | 返回u,v,w u包含A中非零元素的行索引,v包含A中非零元素的列索引,w包含A中非零元素的值 |
finite(A) | 返回維數與A相同的陣列 在A中元素為有限值的地方為1,否則為0 |
ischar(A) | 返回標量 A是字元陣列,返回1,否則返回0 |
isempty(A) | 返回標量 A是空矩陣,返回1,否則返回0 |
isinf(A) | 返回維數與A相同的陣列 A中元素為inf的地方,返回1,否則返回0 |
isnan(A) | 返回維數與A相同的陣列 A中元素為nan的地方,返回1,否則返回0(nan:not a number) |
isnumeric(A) | 返回標量 A是數值陣列,返回1,否則返回0 |
isreal(A) | 返回標量 A中沒有任何元素具有虛部,返回1,否則返回0 |
logical(A) | 返回維數與A相同的陣列 將A中元素轉化為邏輯值 |
xor(A,B) | 返回維數與A和B相同的陣列 A或B中該位置非零且不同時為零,則該位置為1,否則為零 |
4、分支語句/條件語句
if-else
if 邏輯表示式
語句
else
語句
end
if-else連續呼叫
——elseif
if 邏輯1
語句
elseif 邏輯2
語句
else
語句
end
switch語句
switch 表示式
case 值1
語句
case 值2
語句
...
otherwise
語句
end
5、迴圈
for迴圈
for 迴圈變數 = m:s:n %m初值,s步長,n終止值
語句
end
PS:
matlab中迴圈標記變數儘量不要使用i,因為i在matlab中被作為虛數單位。
隱含迴圈
Example:
x = [0:5:100];
y = cos(x);
等價於
for k = 1:21
x = (k-1)*5;
y(k) = cos(x);
end
while迴圈
while 邏輯表示式
語句
end
除錯
——debug選單
名稱 | 功能 |
---|---|
save and run | (在哪兒呢……我沒找到……等把書看完了我試試,嗯,找到了)儲存並執行 |
step | 步進 |
step in | 進入被調函式步進 |
step out | 執行剩餘函式部分,跳出到外部函式 |
畫圖
畫圖這應該也算一個重點了,因為影象是我們理解函式的重要途徑和手段。
符號函式的繪製
說實話什麼是符號函式我還不是很清楚。不過根據萬能的百度,符號函式一般來說是指:
數學上的Sgn 函式返回一個整型變數,指出引數的正負號。語法Sgn(number), number 引數是任何有效的數值表示式。返回值如果 number 大於0,則Sgn 返回1;等於0,返回0;小於0,則返回-1。number 引數的符號決定了Sgn 函式的返回值。
不過我從這本matlab的書上看到它上面的一些舉例程式碼來看,所處理的函式包括:餘弦函式、螺旋曲線方程還有極為複雜的一個指數二元二次的函式,不過都有個特點,就是有正有負。所以,我理解為只要能根據自變數得出正負號資訊的函式,就是符號函式。
可能不準確,以後發現不對了再來修改吧。但願有大神能看到給我點撥一下。
平面圖
- ezplot(f)
繪製f在[-2pi,2pi]內的函式 - ezplot(f,[min,max])
繪製f在制定區間內的函式
- 隱函式,區間x=[min,max],y=[min,max]
- 顯函式,區間【min,max】
- (啥是顯函式,啥是隱函式?)
- ezplot(f,[xmin,xmax,ymin,ymax])
- 繪製f在制定區間內的函式
曲面網格/表面圖
- 網格圖
- ezmesh(f)
- 繪製函式f(x,y)在[-2pi,2pi]內的的影象
- ezmeshc(f,domain)
- 繪製函式f(x,y)在domain區間內的影象
domain為4*1或2*1的陣列,如[min,max],x=[min,max],y=[min,max]或[xmin,xmax,ymin,ymax]
- 繪製函式f(x,y)在domain區間內的影象
- ezmeshc(x,y,z)
- 繪製引數方程x = x(s,t), y = y(s,t), z =z(s,t)在預設區域-2pi\<’s,t<2pi區間的影象
- ezmeshc(x,y,z,[smin,smax,tmin,tmax])
- 繪製引數方程x = x(s,t), y = y(s,t), z =z(s,t)在規定區域的影象
- ezmeshc(…, n)
- 指定繪圖的網格數n,預設為60
- ezmeshc(…, ‘circ’)
- 在指定區域的中心的圓盤上繪製圖形
- ezmesh(f)
- 表面圖
-aaa
先突兀的更新一下檢視mat資料的方法:
檢視mat資料
網上說直接load,然而load了之後並不能檢視資料啊……只是顯示了裡面包含的資料型別和規模,那怎麼具體表示裡面的資料呢?我還是很想看看的……經過一系列百度得到以下結果:
For example
>> x=importdata('Inverse11.mat')
x =
data: [13x2 double]
textdata: {'x' 'Curve1'}
colheaders: {'x' 'Curve1'}
>> x.data
ans =
-5.1022 -0.6084
-3.9924 -0.7133
-3.1249 -0.9650
-2.1057 -1.4895
1.0342 3.0420
1.0342 3.0420
1.0342 3.0420
1.0342 3.0420
1.0342 3.0420
1.9070 1.4895
2.9682 1.0490
3.9941 0.7762
5.1033 0.6503
>> x.textdata
ans =
'x' 'Curve1`