標籤:

MATLAB筆記(3.1)程序

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文件。

程序設計流程:

分析問題,確定方法Rightarrow設計演算法,畫流程圖

Rightarrow選擇編程工具,根據演算法編程Rightarrow調試程序,輸出結果

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語句組,結構如下圖:

多分支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語句實現選擇結構:

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 |