MATLAB筆記(3.1)程序
來自專欄 MATLAB的學習筆記18 人贊了文章
本文為學習Mooc課程「科學計算與Matlab語言」專題三的筆記。
#留作自己復慣用,也方便其他同學查找相關的內容。
#另外,想學習的同學可以免費報名參加Mooc官網所提供的相關課程。
補充:1.7字元串的處理
1.數據類型分為兩類:數值型數據&字元型數據(字元串數據)
2.字元串數據的表示方法:用單引號括起來相應字元序列
>> U=Jiaotong University;>> U(1:4)ans =Jiao
如果字元串中含有「」則必須用「」來表示:
>> XJTU=Xian Jiaotong University;>> XJTUXJTU =Xian Jiaotong University
3.建立字元串矩陣:
>> K=[X J T U;1 2 3 4]K =X J T U1 2 3 4>> K(1,1)ans =X
舉例:建立一個字元串向量,然後對該向量做如下處理:
① 取第1~5個字元組成的子字元串。
② 將字元串倒過來重新排列。
③ 將字元串中的小寫字母變成相應的大寫字母,其餘字元不變。
④ 統計字元串中小寫字母的個數。
note:V(end:-1:1):表示從最後一項到第一項的排列,即倒置;
k=find(ch>=a&ch<=z):找到ch這個字元串中的小寫字母,把它的序號記成矩陣k;
ch(k)=ch(k)-(a-A):表示對ch中k向量所表示的位置處的元素進行修改,改為大寫;
>> ch=ABc123d4e56Fg9;subch=ch(1:5) revch=ch(end:-1:1) k=find(ch>=a&ch<=z) ch(k)=ch(k)-(a-A) length(k)subch =ABc12revch =9gF65e4d321cBAk = 3 7 9 13ch =ABC123D4E56FG9ans = 4
4.字元串相關的函數:
(1)字元串的執行eval(字元串)函數,把一個字元串在相應的Matlab命令中執行:
>> m=[1,2,3,4,5,6];>> k=cos(pi*eval(m))k = -1 1 -1 1 -1 1
(2)字元串與數字之間的轉換:字元串以ASCII碼儲存的,用abs和double來獲取字元串所對應的數字;char函數可以把數字轉化為對應的字元串;
>> m=MATLAB;>> abs(m)ans = 77 65 84 76 65 66>> char(abs(m)+32)ans =matlab
5.字元串的比較:
(1)利用關係運算符;
>> MATLAB>=matlabans = 0 0 0 0 0 0
(2)字元串比較函數;
strcmp(S1,S2):比較兩個字元串是否相等;
strcmp(S1,S2,n):比較兩個字元串的前n個元素是否相等;
strcmpi(S1,S2):忽略大小寫來比較ASCII碼是否相等;
strcmpi(S1,S2,n):忽略大小寫來比較ASCII碼前n個字元是否相等;
以上比較結果,相等輸出1,不相等輸出0;
>> strcmp(MATLAB,matlab)ans = 0>> strcmpi(MATLAB,matlab)ans = 1
(3)找到短字元串在長字元串中的初始位置:
findstr(S1,S2)中,假設S1是S2的一個部分(順序相同)找出短序列在長序列中的開始位置的函數,即findstr,例:
>> findstr(cde,abcde)ans = 3
strrep(S1,S2,S3):將S1中S2的部分替換為S3:
>> strrep(abcdefg,abc,123)ans =123defg
一、程序基本知識:
1.程序:用計算機語言描述解決問題的方法與步驟。
2.程序設計流程,Matblab程序的擴展名為.m,即m文件。
3.三種基本結構:順序,選擇,循環
4.腳本文件和函數文件:
(1)腳本文件:可以直接在命令行窗口執行的文件,也稱命令文件;
(2)函數文件:必須定義一個函數,不能直接執行,需要調用來執行;
5.建立腳本文件和函數文件(文本文件),舉例、求兩個矩陣的乘積:
(1)腳本文件:
edit 文件名>腳本編輯器>編輯內容>control+S保存;
腳本的內容為:
A=[1,2,3;4,5,6];B=[1,2;3,4;5,6];C=A*B
再次輸入文件名,即可運行;
>> edit example>> exampleC = 22 28 49 64
(2)函數文件:
先建立F函數:
function [L]=F(A,B)L=A*Bend
接下來再調用F函數:
>> m=[1,2,3;4,5,6];>> n=[1,2;3,4;5,6];>> p=F(m,n)L = 22 28 49 64p = 22 28 49 64
二、順序結構:
按照語句的排列順序來進行執行;
note:此處為Matlab程序語言;
note:一個Matbla文件包含三個部分:
(1)輸入原始數據;(2)對原始數據進行處理;(3)輸出處理結果;
1.輸入文件:
>> a=input(輸入變數a的值:)輸入變數a的值:100a = 100
2.輸出文件:
disp()函數不顯示變數的名字與空格,輸出形式緊湊。
>> disp(a) 100
3.暫停程序:
輸入pause表示暫停,按任意鍵可以繼續;
強行終止,按control+c;
4.舉例,A(1,1),B(4.5,4.5),求AB的長度以及黃金分割點坐標:
edit distance
開啟腳本文件的編寫:
a=input(a=);b=input(b=);c=a+0.618*(b-a);s=abs(b-a);disp(c)disp(s)
腳本文件的含義是:
(1)通過提示「a=」來給a賦值;
(2)通過提示「b=」來給b賦值;
(3)計算黃金分割點的坐標;
(4)計算模長,通過複數相減,再取模;
(5)輸出c點的坐標;
(6)輸出距離s;
在matlab中運行distance腳本文件,matlab提示輸入a,b得到結果c,s:
>> distancea=1+ib=4.5+4.5i 3.1630 + 3.1630i 4.9497
這個程序就像一個多變數函數,但是從程序讀取的過程看,我們必須要知道內部結構是什麼,只輸入兩個參數,得到想要的結果。
三、用if語句實現選擇結構:
根據給定條件是否成立來決定程序運行的分支。
1.單分支的if語句,如果條件成立,則執行語句組,如果條件不成立,則直接跳過;
2.雙分支的if語句,如果條件成立,則執行語句組1,如果條件不成立,則執行語句組2;
舉例:奇數輸出平方根,偶數輸出立方根:
x=input(x=);if rem(x,2)==1 y=sqrt(x)else y=x^(1/3)endy
接下來運行程序:
>> exampleifx=8y = 2y = 2
note:在if-else中,如果結果為1則執行語句組1,如果結果為0,則執行語句組2;這裡用了邏輯語句:rem(x,2)==1,當然,也可以直接用rem(x,2)來代替;
note:x^(1/3)可以用power(x,1/3)來代替;
3.多分支的if語句組,結構如下圖:
當第k個條件不成立時,不輸入else來進行輸出,而繼續用elseif繼續判斷。
舉例、輸入大寫字母,輸出小寫字母,輸入小寫字母,輸出大寫字母,輸入數字,得到其平方的值,輸入其他符號,則原樣輸出。
c=input(請輸入一個字元:,s);if c>=A && c<=Z disp(lower(c))elseif c>=a && c<=z disp(upper(c))elseif c>=0 && c<=9 disp(str2double(c)^2)else disp(c)end
大寫變小寫的函數:lower()
小寫變大寫的函數:upper()
special note:此處涉及字元串問題,見專題一的1.7節「字元串的處理」。
四、用switch語句實現選擇結構:
舉例、 輸入一個英文單詞,判斷它是否以母音字母開頭:
c=input(請輸入一個單詞:,s);switch c(1) case {A,E,I,O,U,a,e,i,o,u} disp([c,以母音字母開頭]); otherwise disp([c,以輔音字母開頭]);end
另一種解決方法:
c=input(請輸入一個單詞:,s);if findstr(c(1),AEIOUaeiou)>0 disp([c,以母音字母開頭]);else disp([c,以輔音字母開頭]);end
舉例、根據PM2.5判斷空氣質量:
g=input(請輸入PM2.5值:);switch fix(g) case num2cell(0:34) disp(空氣質量優); case num2cell(35:74) disp(空氣質量良好); case num2cell(75:114) disp(空氣質量輕度污染); case num2cell(115:149) disp(空氣質量中度污染); case num2cell(150:249) disp(空氣質量重度污染); otherwise disp(空氣質量嚴重污染);end
note:input(輸入一個英文單詞,S),即輸入的S為字元串。
推薦閱讀:
※要建模了,matlab怎麼提高啊?
※基於表達矩陣繪圖
※matlab中的intcon是什麼意思?
TAG:MATLAB |