第一篇:Matlab中數據結構總結
參考鏈接:心心水滴論壇
古木小永
主要數據結構包括數組,字符串,胞,結構體的用法,下面依次介紹 數組
1.1 數組的創建
創建數組的方法有很多,首先先講一下如何手動去輸入一個數組。比如我現在有兩組數據,分別對應的是5個被試的身高以及體重,我想身高數據放在第一列,數據位178,167,170,156,182,第二列數據為體重數據,其對應為65,50,63,70,67。我們想把這兩組數據存在一個變量Data上,這個時候我們只要在matlab命令框中輸入 >>Data = [178,65;167,50;170,63;156,70;182,67]
? Data= 178 65 167 50 170 63 156 70 182 67
這里可以發現對于一堆數據的輸入,可以先用一個中括號把所有數據括起來,一行的每個數據用逗號隔開或者可以通過空格,比如下面例子,行與行之間用分號隔開。Data2 = [1 2 3;4 5 6] ? Data2= 1 2 4 5
如果每個數據都需要這樣輸入,那么會很麻煩,這里就提供了一些簡單的方法來輸入比較規整的數據。1.>>A = 1:5 ? A = 2 3 4 5 2.>>B = 1:2:10
?? B = 3 5 7 9 可以看到如果我們想輸入一列數據,并且這些數據是以等差數列的方式排布,我們就可以用a:b:c這樣的形式來寫,意思就是從a開始,每隔b有一個數據,然后寫直到不大于c這樣一組數。當然其中b可以省略,省略默認b的值為1。
1.2 數組的合并(這里要用到上面的A,B變量)
>> C = [A;B]
? C = 2 3 4 5
3 5 7 9 >>D = [A,B] ? D = 2 3 4 5 1 3 5 7 9
%其中A和B都是一個數組,如果其能保證對齊,那么這些數組是可以合并的,就好像上面的兩條命令。可以發現如果用分號,那么合并的情況是以列的方式合并,如果用逗號,那么是以行的方式合并,這個和手動輸入數組是一致的,只不過把前面的數字當成數組來操作就可以了。
1.3 數組內部數據的取得(這里要用到前面的Data變量)
輸入的方法我們有了,但我們如何來取出一個數據呢?先看看命令 >>Data(4,1)? ans = 156 如何取出一行數據
>>Data(3,:)? ans = 170 63
%和上面所說的一樣,前面那個數代表行數,后面如果我們想取所有的數據,只需要在逗號后面寫1:end就可以了,也就是第三行的對應的第一列到最后一列的數據,可以簡寫為一個冒號。同理比如取出第一列的數據可以寫成 >>Data(1:end,1)或者 Data(:,1)
但我們有的時候不希望取出一整列的數據,而是想選出某列當中的幾行數據,這個時候我們就可以發現其實數據取得前面是管行,后面是管列,并且看到1:end這個就可以聯想到我們前面所演示的如何輸入規整的數組。說白了這個1:end其實就是一個數組,如果是這樣,我們就可以以此類推,如果我想輸出第二列的第一,三,五行數據,那么命令就是 >>Data([1,3,5],2)%輸出的結果我就不演示了,大家可以嘗試一下。
1.4 數組內部數據的修改以及增添
同樣我們可以用上面的Data變量,比如我現在發現我在Data里面有個數據是錯的,比如第4行的第二個數據覺得有問題,通過查看我們原始的數據發現第四個人的體重不是70而是50,那么我們就需要修改原始的數據。如果重新輸入一遍那就太蛋疼了,所以修改數據是非常關鍵的。有了上面的一些經驗,我們來看看如何修改這個數據 >> Data(4,2)= 50 ? Data = 178 65 167 50 170 63 156 50 182 67
%在這里我們發現Data數據變了。如果我們想改一行數據,比如第三行數據應該是180,61,命令是
>> Data(3,:)= [180,61] ? Data = 178 65 167 50 180 61 156 50 182 67
%這里要注意我們要改寫一行,一列數組,那么后面的數據尺寸一定要和前面那行或者列的尺寸相同。假如我們想改這個Data的第一列的第一,三行的數據,分別改為150,160,這個時候我們輸入的方法就是 >>Data([1,3],1)= [150,160]
1.5 數組的運算
>> A = 1:5; >> B = A + 5
?B = 6 7 8 9 10字符串
2.1 字符串的創建
字符串的創建和數組的創建還是有一定的區別,使用單引號將所需要的字符括起來就可以(這里對比數組,數組是用中括號將數字括起來)
>>A = ?hello world? A =
hello world %這里我們就建立了一個字符串變量,變量的內容就是hello world,同時我們可以再workspace當中查看這個變量。注意:
1.這里的單引號必須是英文字符的單引號,如果在中文輸入法的情況下輸入這個單引號是會出現錯誤的,這個事初學者經常會犯的錯誤。不能用雙引號,會報錯。
2.字符串是用單引號括起來就可以,但我們想輸入單引號這這個字符,那么就要在單引號的前面再加一個單引號,比如我想生成一個字符串是 Tom?s cat,這個時候的命令就是
>>A= ?Tom??s cat? A = Tom?s cat
2.2 字符串的合并
數組可以實現合并,如果維數匹配,那么兩個數組可以合并成一個數組,那么字符串也可以合并,其合并的方法和數組的合并一樣,譬如
>>A = ?hello?;
%這里在命令的后面使用了分號,這個分號的意思就是運行這行命令,但不將結果顯示出來,所以這個命令的意思就是創建一個變量名為A的字符串,并且變量A的內容是hello >>B= ?world?;
%創建字符串B >>C= [A,B]
%將A,B這兩個字符串以水平方式合并起來,結果見下面 C = helloworld >>D= [A;B]
%將A,B這兩個字符串以垂直方式合并起來,結果見下面 D =
hello
world
最常用的還是水平合并
2.3 字符串的使用
現在我們先創建一個字符串,比如是一個數據的文件名
>>filename = ?data.txt?;
這個時候我們只是想看看這個文件是什么類型的文件,也就是我們需要將后面三個字符取出來,而不去管其它的內容,獲取的方法和數組的使用方法一致,可以使用括號來實現這個功能,譬如
>>filename(end-2:end)%這個命令的意思是取出這個字符串倒數第三至最后一個字符 ans = txt
如果我們想取出前面文件名那部分,而不想關注后面的數據類型,這時候使用方法如下
>>filename(1:end-4)
%取出字符串的第一個至倒數第五的字符 ans = data 2.4 字符串的修改
這個可以參照數組的用法,這里就不詳細的解釋了,如果有問題可以參考數組的用法 >>A = ?helloworld?;
%創建字符串
>>A(6:10)= ?China?
%將helloworld中的world改成China A =
helloChina 注意: 這里賦值號后面所跟的字符數量要和前面A中要修改的字符數量相同,如果不匹配的話是會出現錯誤的。
2.5 字符串的其它用法
數組的其中一個用法就是在數組后面的括號中加入一個邏輯變量數組,這樣就可以取出邏輯數組中那個對應是true的那個位置的值,這個用法在字符串中同樣適用。譬如
>>A= ?helloChina?;
>>index= A~=?h?
%取出helloChina 當中不是h這個字符的位置返回一個邏輯數組,這個數組的意思就是當helloChina當中不等于h的那個位置為true,否則為false index= 0 1 1 1 1 1 0 1 1 1 >>B= A(index)B =
elloCina 這個用法經常會用來去除字符串當中的空格,在這里就先注意一下。胞
好比“數組”是個容器(這里我們將字符串也當成數組看待),它可以裝很多相同類型的數據。但后面經常會碰到我們希望找到一個更大的容器能裝各式各樣的“數組”,這個時候我們就用到了胞(cell)。
在我眼中胞就是一個能裝各種各樣數據類型的這么一個容器,可以裝前面所講的所有的數據類型,還可以裝后面要講的結構體,甚至胞還可以自己裝自己,也就是一個胞中套一個胞。
3.1
胞的創建
數組的創建是用方括號,數組的調用要用到小括號,胞的創建是用花括號,胞的調用既可以用小括號,也可以用花括號,但效果不一樣。對于胞的調用會在后面詳細的介紹,但前面所說的這些括號的使用是很多初學者經常弄混的,所以這個需要大家注意一下。
胞的創建要用花括號,譬如: >>A = {?helloworld? , true, [1,2,3,4]} A = 'helloworld' [1] [1x4 double]
這里我們創建了一個胞,這個胞里面有三個元素,第一個元素是一個字符串,字符串的內容是helloworld,第二個元素是一個邏輯型變量,其值為true,第三個元素是一個數組,數組里面有4個整型變量。創建的方法很簡單,用花括號將要放在一起的東西括起來,然后用逗號或者分號隔開,分號和逗號的使用和在創建數組時是一樣的。
看起來胞很難用,亂七八糟的一堆東西,但在后面用的過程中,胞里面的所存的東西一般都是同一種類型的,比如要么都是數組,要么都是字符串。這里也只是顯示一下胞的里面是可以裝各種各樣的數據類型。當然胞里面也可以裝變量,譬如 >>M = ?helloworld?;>>N = ?Tom??s cat?;>>A = {M , N , [1,2,3,4]}
A = 'helloworld' 'Tom's cat' [1x4 double]
3.2 胞中元素的調用(重點與難點)
比如我們現在有一堆字符串組成了一個胞,這個時候我們如何來調用這個字符串是一個很重要的問題。在前面我有說過胞的調用既可以使用小括號,也可以使用花括號,下面我們來看看其區別在什么地方。
>> A ={'data1.txt','data2.txt','data3.txt'};%創建一個胞,里面有三個字符串 >> M = A(1)%將A(1)這個東西存到M這個變量中 M = 'data1.txt'
>> N = A{1}
%將A{1}這個東西存到N這個變量中 N = data1.txt
這個時候我們可以在workspace中看到,M這個變量的屬性是 1*1cell,而N這個變量的屬性是字符串。也就是說用小括號調用的時候,沒有改變cell的屬性,出來的東西還是cell,然而當用花括號調用的時候,出來的東西是原本我們存進去的東西,比如我們存一個字符串的時候,調用出來的就是一個字符串,如果存的是一個數組,那么調用出來的就是一個數組。
假如我們現在只需要A這個胞中的前兩個字符串,而第三個字符串我們不需要,這個時候我們可以這樣使用
>>B = A(1,1:2)%這個用法和數組的用法一樣,并且如果這個cell是一行或者一列,可簡寫為
>>B = A(1:2)
也就是說大規模的調用胞中的元素的時候會用小括號,而胞中單一的元素調用用的是花括號。同樣我們還可以更進一步的調用胞中的元素。比如 >> A ={'data1.txt','data2.txt','data3.txt'};%創建一個胞,里面有三個字符串 >> B = A{1}(end-2:end)%取出胞的第一個元素(data1.txt)的后三個字符(txt)的使用方法 B = txt
同樣如果胞里面存的是一個數組,我們希望取出數組中的某個元素或者某行數據,也可以使用類似的方法。比如
>>A = {[1,2;3,4],[5,6;7,8]} %創建一個胞,胞里面的兩個元素都一個2*2數組 A = [2x2double] [2x2 double]
>>B = A{2}(:,2)
%取出第二個矩陣的第二列數 B =
也就是說這里我們只要將A{2}當成一個數組就可以了,里面的調用,修改都可以參照數組的用法
3.3 胞中元素的添加
比如現在有個胞,里面只有2個矩陣,我現在想增加第三個矩陣,用法如下 >>A = {[1,2;3,4],[5,6;7,8]} %創建一個胞,胞里面的兩個元素都一個2*2數組 >>A{3} = [9,10;11,12]
A = [2x2double] [2x2 double] [2x2 double] 或者
>> A(3)= {[9,10;11,12]}
A = [2x2double] [2x2 double] [2x2 double]
這里我們發現用圓括號和花括號都可以實現胞中元素的添加,使用花括號的時候,只要直接寫內容就好,而使用圓括號的時候,需要先生成一個胞,然后將這個胞添加到原來那個胞的后面。
注意:如果使用A{3} = {[9,10;11,12]},在matlab當中是不會出錯的,但可以發現結果是 [2x2 double] [2x2double] {1x1 cell} 如果僅僅用A{3}(:,2)是會出錯的,所以盡量避免不要弄混了。3.4 胞的一個常用用法
比如現在我有3個txt文檔,里面存儲著3個被試的行為數據,我們想通過循環的方式來依次讀這三個文檔,這個時候就會碰到一個問題,如何去調用這三個txt文檔的文件名? 由于現在還沒有將如何使用循環,在這里就先簡單說一下,我們現在寫的命令,運行的時候是按照命令從上到下的順序依次運行一遍。但假如我們有在一堆代碼中有其中一段需要重復運行幾次,那么最簡單的方法就是將這段代碼復制粘貼幾次,但如果這樣做,那么程序就會變得很冗雜,于是就會用到循環這個東西,也就是我會告訴電腦,你運行到這里的時候給我重復運行其中的這幾條命令。
但只是重復而沒任何改變的話,那么這個循環就太死板了。更多情況下重復的過程中會有些許的變化,但變化不會太大。這個時候就需要一個能變得東西,比如我有一個變量i,我希望第一次循環的時候i等于1,第二次循環的時候i等于2,這樣我就可以通過這個i來改變每次循環的內容。對于怎么寫這個循環以及循環的用法,后面會有專門的一節來介紹。這里就記得在每次循環的過程中i就會增大1.對于前面的這個問題,我們可以先生成一個胞,這個胞里面存著這些txt文檔的文件名。譬如
>>filename = {?data1.txt? , ?data2.txt? , ?data3.txt?}
當我們調用第一個文件的時候,我們需要告訴一個讀txt文檔函數需要讀的文件名是什么,這個時候我們就可以告訴那個函數要讀的文件名是filename{i},也就是說當第一次循環的時候,讀的txt文檔的文件名就是filename{1},也就是字符串data1.txt,后面也就可以處理這個文件的數據,當循環第二次的時候,調用的文件名就變成filename{2},就可以處理第二個文件,以此類推。
當然我們發現在創建這個filename的時候,每次都要在最后輸入.txt很麻煩,我們能不能有一些簡單的方法?這個時候我們就可以先建一個cell,譬如 >>filename = {?data1? , ?data2? , ?data3?}
當我用第一個文件名的時候,應該是data1.txt,我如何將這個固定的.txt加到后面呢?其實最簡單的方法是用strcat函數,但對于函數是什么,還沒有介紹。但不用函數同樣能達成目的,這個時候就要想想前面講字符串的一些知識,由于字符串可以接起來,所以每次循環用文件名的時候,就可以使用[filename{i} , ?.txt?]來實現,這個方括號所得到的東西就是一個字符串,也就是data1.txt。
如果有心細的同學說,那么前面那個data是不是也可以不用寫?答案是肯定的,這個時候我們可以輸入
>>filename = {?1? , ?2? , ?3?}
在循環的過程中,可以將?data? , filename{i} 和?.txt?連接起來,連接的方法為[?data? , filename{i} , ?.txt?],如果有對連接方法不太清楚的同學,可以參見字符串的用法 那節。
當然還有同學提出,那個i不就是1,2,3么?干嘛還要再生成那個胞?這里需要提醒的一點是,i所代表的是一個整型變量,而在字符串中那個1,2,3是一個字符類型的變量,如果直接使用[?data?, i ,?.txt?],matlab會自動將i所對應的那個ascii碼轉換成相應字符,而1,2,3所代表的ascii碼都是空,所以直接使用[?data?, i ,?.txt?]出來的字符串都是data.txt。當然解決辦法就是將整型i變成字符1,2,3,這里就要使用到另外一個函數num2str,這個函數就是能將數字變成字符。上面正確的寫法應該是[?data? , num2str(i), ?.txt?]。結構體
首先介紹一下什么是結構體,按照我的理解,結構體就是將很多變量集中在一起的一個數據類型。舉個形象的例子來看,結構體就是一個很大的盒子,在盒子中可以裝各種小盒子,而這些小盒子就結構體內裝的變量,比如一個數,一個數組,一個胞,甚至是另外一個結構體,并且這個大盒子還有個好處就是可以給里面的每個小盒子起一個名字,類似裝鞋子的盒子,裝領帶的盒子或者裝首飾的盒子。
其實胞同樣也可以這樣理解,在上面的例子中,胞也可以看成是一個大盒子,里面能裝各種小盒子,但和結構體不同的是在胞中這些小盒子是按照順序放置的,我們只能通過其順序獲取小盒子內的東西,比如第一個盒子,第二個盒子,而不同通過形象的名字來獲取。所以在我理解當中凡是能用結構體完成的,胞同樣也能完成,但可能在有些情況下使用胞會方便一些,有些情況使用結構體會更加方便一些。具體使用什么方式來存儲變量,可能要根據實際情況來分析。
4.1 結構體創建
假如我們現在想存儲一個被試的信息,包括這個被試的編號(整數),性別(字符串),年齡(整數)以及愛好(胞),我們可以使用四個變量來存儲,但如何我們會經常用到這些信息,并且想將這些信息傳遞給其它函數,那么這個時候如果使用4個變量來存儲就嫌的比較麻煩;如果是用cell去存儲,那么如果我們取內容的時候就要嚴格按照其順序獲取單個內容(比如在存儲的時候愛好排在第4個,那么在后面使用的時候就要從cell的第4個元素中取),這樣同樣不方便。這個時候結構體就是一個比較好的選擇。
subject = struct('ID',1,'gender','male','age',23,'hobby',{{'football','singing'}});或者
subject.ID = 1;subject.gender = 'male';subject.age = 23;subject.hobby = {'football','singing'};
以上的兩種創建的方式都是允許的,一般下面的這種方式可能會更加直觀并且更加常用一些。注意:在第一種創建的方法中,cell是用兩個大括號括起來的,也就是這里需要大家注意一下,如果我只用一個大括號會出現什么問題呢?這個可以留給大家自己試試。一般為了避免出現不必要的錯誤,我比較推薦第二種創建方式。這里如果只用一個大括號的話,會變成1×2struct 在這個里面我們就可以理解subject就是那個所謂的大盒子,在這個大盒子中我們裝了4個小盒子,分別取名叫ID, gender, age, hobby。然后在這4個盒子中裝了對應的內容。
當然如果我們有很多個被試如何去存儲呢?這個時候就會出來一個東東叫做結構體數組,你可以將這個東西想象成順序排放的一堆大盒子。創建的方式也很簡單,比如:
subjects = [struct('ID',1,'gender','male','age',23,'hobby',{{'football','singing'}}),struct('ID',2,'gender','female','age',21,'hobby',{{'singing','dancing'}})];或者
subjects(1).ID = 1;subjects(1).gender = 'male';subjects(1).age = 23;subjects(1).hobby = {'football','singing'};subjects(2).ID = 2;subjects(2).gender = 'female';subjects(2).age = 21;subjects(2).hobby = {'singing','dancing'};
注意:既然是結構體數組,那么也就是要保證結構體數組內每個成員的形式是一樣的,比如上面的例子來說,結構體數組中每個元素都要有相同的“小盒子”,但“小盒子”里面裝的內容可以不同。如果在某個成員中不設置這個小盒子,那么這個成員同樣會被默認創建一個空的“盒子” 如果我們想獲取所有成員的年齡怎么辦? [subjects.age] 或者 {subjects.age}
第二篇:matlab總結
班級: 學號: 姓名:
Matlab學習綜述
MATLAB是一種科學計算軟件,專門以矩陣的形式處理數據。MATLAB將高性能的數值計算和強大的數據可視化功能集成在一起,并提供了大量的內置函數,從而被廣泛地應用于科學計算、控制系統、信息處理等領域的分析、仿真和設計工作,而且利用MATLAB產品的開放式結構,可以非常容易地對MATLAB的功能進行擴充。
MATLAB產品由若干個模塊組成,不同的模塊完成不同的功能,其中主要的核心模塊有MATLAB、MATLAB Toolboxex、MATLAB Compiler Simulink、Simulink Blocksets、Real-time Workshop(RTW)Stateflow。這些產品大體上可以分為以MATLAB為基礎的產品和以Simulink為基礎的產品兩大分支。其中,MATLAB是MATLAB產品家族的基礎,任何其他MATLAB產品產品都以這個模塊為基礎。MATLAB的桌面應用程序開發工具是以MATLAB Compiler為核心的一組編譯工具。Simulink是基于MATLAB的框圖設計環境,可以用來對各種動態系統進行建模,分析和仿真,它的建模范圍廣泛,可以針對任何能夠用數字來描述的系統進行建模。
一種完整的計算機應用語言應該提供對數據的描述和對數據的操作。在M語言中,最常用的數據類型表現手段和形式就是變量和常量,由于MATLAB軟件自身的特點,它是一種以數值計算為基礎的軟件,因此M語言的基本處理單位是數值矩陣或者數值向量,在M語言中統一將矩陣或者向量稱之為數組,因此掌握一些基本的矩陣、向量和數組操作的基本知識就成為了掌握MATLAB軟件的基礎。變量和常量是編程語言中類型的表現手段和形式,掌握變量和常量的概念也是掌握M語言編程的基礎。所謂變量,就是指在程序運行中需要改變數值的量,每一個變量都具有一個名字,變量將在內存中占據一定的空間,以在程序運行的過程中保存其數值,對變量的命名有相應的要求:變量必須以字母開頭,后面可以是字母、數字或者下劃線之間的組合。所謂常量就是在程序運行的過程中不需要改變數值的量。
MATLAB專門以矩陣作為基本的運算單位,首先要掌握向量、矩陣、索引和多維數組的概念,以及在MATLAB環境下創建向量、矩陣和多維數組的方法,以及操作矩陣和多維數值的函數的使用方法。
目前的MATLAB版本中不僅有多達十幾種的基本數據類型。在不同的專業工具箱中還有特殊的數據類型,并且MATLAB還支持面向對象的編程技術,支持用戶自定義的數據類型。獲取MATLAB的數據類型可以在MATLAB命令行窗體中鍵入help datatypes。MATLAB的數據類型包括基本的數值類型,邏輯類型數據、元胞數值、結構和字符串等,需要指出一點,MATLAB的基本數據是雙精度數據類型和字符類型。MATLAB提供了完整的編寫應用程序的功能,這種能力被稱為M語言的高級語言來實現。這種語言是一種解釋性語言,利用該語言編寫的代碼僅能被MATLAB接受,被MATLAB解釋執行。其實,一個M語言文件就是由若干MATLAB的命令組合在一起構成的,和C語言類似。M語言文件都是標準的純文本格式的文件,其文件的擴展名為.m。MATLAB的函數主要有兩類,一類被稱為內建函數,這類函數是由MATLAB的內核提供的,能夠完成基本的運算,例如三角函數、矩陣運算函數等。另外一類函數就是利用高級語言開發的函數文件,這里的函數文件包括用C/FORTRAN語言開發的MEX函數文件,也包括了M函數文件。
M語言文件可以分為兩類,其中一類是腳本文件,另一類是函數文件,腳本文件是最簡單的一種M語言文件。所謂腳本文件就是由一系列的M語言文件指令和命令組成的純文本格式的M文件,執行腳本文件時,文件中的指令或者命令按照出現在腳本文件中的順序依次執行。腳本文件沒有輸入參數,也沒有輸出參數,腳本文件處理的數據或者變量必須在MATLAB的公共工作空間中,腳本文件主要是由注視行和代碼行組成。
函數文件是M文件最重要的組成部分,M語言函數文件能夠接受用戶的輸入參數,并進行計算,然后將計算結果作為函數的返回值返回給調用者,M函數文件和腳本文件不同,函數文件不僅有自己特殊的文件格式,而且不同的函數還分別具有自己的工作空間,函數文件的輸/輸出參數不同,這些輸入/輸出參數在定義的時候不需要指出變量的類型,因為MATLAB默認這些參數都使用雙精度類型,這樣可以簡化程序的編寫。M語言的函數文件不僅可以有一個輸入參數和一個返回值,還可以為M語言函數文件定義多個輸入參數和多個輸出參數,同一個M函數文件中可以包含多個函數。如果在同一個M函數文件中包含了多個函數,那么將出現在文件中的第一個M函數稱為主函數,其余的函數稱為子函數。
經過這么一段時間的學習,對MATLAB有了初步的認識。但是關于它還有很多知識我們所不知道,還有待進一步的學習。以上內容是我對這學期所學課程的總結,可能有些地方總結的不夠到位,因為有些地方學習的不夠深入,所以,以后要更加努力,在MATLAB的學習上多花一些時間,為以后的學習和工作打下基礎。
第三篇:MATLAB總結
目錄
一、Matlab相關說明.....................................................................2
二、Matlab操作注意事項..............................................................2
三、Matlab常用代碼(圖像處理相關)......................................5
四、Matlab常用快捷鍵.................................................................7
五、Matlab學習心得.....................................................................8
一、Matlab相關說明
Matlab是“Matrix Laboratory”的縮寫,意為“矩陣實驗室”。MATLAB和Mathematica、Maple并稱為三大數學軟件。它在數學類科技應用軟件中在數值計算方面首屈一指。MATLAB可以進行矩陣運算、繪制函數和數據、實現算法、創建用戶界面、連接其他編程語言的程序等,主要應用于工程計算、控制設計、信號處理與通訊、圖像處理、信號檢測、金融建模設計與分析等領域。
MATLAB的基本數據單位是矩陣,它的指令表達式與數學、工程中常用的形式十分相似,故用MATLAB來解算問題要比用C,FORTRAN等語言完成相同的事情簡捷得多,并且MATLAB也吸收了像Maple等軟件的優點,使MATLAB成為一個強大的數學軟件。在新的版本中也加入了對C,FORTRAN,C++,JAVA的支持。
我所使用的Matlab版本是2012a,下文所涉及到圖片、專業術語等都是以此版本為基礎。
二、Matlab操作注意事項
1.打開并運行一個現存的m文件且這個m文件運行時需用到同一級文件夾中的其他文件,會出現如下提示框:
選擇變更文件夾,將當前文件夾變更為這個m文件所在的文件夾。
2.不小心點錯或關閉了各種小窗口,將Matlab恢復成默認布局
點擊桌面—桌面布局—默認
3.查看某個函數的用法
在命令窗口輸入該變量的名稱,回車即可。
4.查找某個函數的用法
在命令窗口輸入help+函數的名稱,回車后會自動顯示該函數的相關信息。
5.運行文件后報錯 如下圖所示,命令窗口中報錯的第一段是錯誤的原因,后面幾段會顯示發生錯誤的文件夾以及在該文件夾中的位置。
點擊文件的名稱,會跳轉出一個提示框,上面顯示了該文件的具體實現功能,如下圖所示。點擊文件名后面的行標號,可以直接跳轉到發生錯誤的那一行。
6.如何編輯界面?
修改如圖所示的fig文件
1.新建一個GUI文件
2.選擇打開現存的GUI文件,點擊Open,就可以對當前界面進行編輯了。
7.如何將MAtlab中默認的current folder修改為自己想要的路徑,每次啟動后都默認是自己 設定的這個路徑?
>>右鍵matlab 快捷方式,屬性-快捷方式-起始位置 填入你自己的工作目錄。8.把圖復制到WORD文件的方法:電機EDIT—>Copy Figure—>Ctrl+V 9.輸入時,標點必須是英文狀態下的
10.大多數情況下,matlab對空格不予處理
11.小括號代表運算級別,中括號用于生成矩陣,大括號用于構成單元數組
12.分號;的作用:不顯示運算結果,但對圖形窗口不起作用。分號也用于區分行,13.逗號,的作用:函數參數分隔符,也用于區分行,顯示運算結果,當然不加標點也顯示運算結果
14.冒號:多用于數組
15.續行號...不能放在等號后面使用,不能放在變量名中間使用,起作用時默認顯藍色 16.雙引號'string'是字符串的標識符 17.感嘆號!用于調用操作系統運算
18.百分號%是注釋號,百分號后面直到行末的語句matlab跳過執行.另外還有一個塊注釋,即對多行一次注釋,會使用到,格式為(注意%{ 和%}都要單獨成行)%{ %} 19.矩陣中用圓括號表示下標,單元數組用大括號表示下標
20.對變量名的基本要求:區分大小寫,不超過63個字符,以字母開頭,只能是字母,數字和下劃線
三、Matlab常用代碼(圖像處理相關)
1.創建一個文件夾 mkdir('D:myData');2.將圖片保存到指定的文件夾
image_source=strcat('result',num2str(loop),'.jpg');imwrite(F.cdata,image_source);3.將電影轉成圖片序列
fnum=size(mov,2);%讀取電影的禎數 for i=1:fnum strtemp=strcat('C:UsersAdministratorDesktopparticalfiltermyself粒子濾波',int2str(i),'.jpg');%將每禎轉成jpg的圖片 imwrite(mov(i).cdata,strtemp,'jpg');end
4、模擬噪聲生成函數和預定義濾波器
① imnoise:用于對圖像生成模擬噪聲,如:
i=imread('104_8.tif');j=imnoise(i,'gaussian',0,0.02);%模擬高斯噪聲 ② fspecial:用于產生預定義濾波器,如: h=fspecial('sobel');%sobel水平邊緣增強濾波器 h=fspecial('gaussian');%高斯低通濾波器 h=fspecial('laplacian');%拉普拉斯濾波器
h=fspecial('log');%高斯拉普拉斯(LoG)濾波器 h=fspecial('average');%均值濾波器
5、圖像文件I/O函數命令
imfinfo 返回圖形圖像文件信息
語法:info=imfinfo(filename,fmt)info=imfinfo(filename)imread 從圖像文件中讀取(載入)圖像
語法:A=imread(filename,fmt)[X,map]=imread(filename,fmt)[...]=imread(filename)[...]=imread(URL,...)[...]=imread(...,idx)(CUR,ICO,and TIFF only)[...]=imread(...,'frames',idx)(GIF only)[...]=imread(...,ref)(HDF only)[...]=imread(...,'BackgroundColor',BG)(PNG only)[A,map,alpha] =imread(...)(ICO,CUR,PNG only)imwrite 把圖像寫入(保存)圖像文件中
語法:imwrite(A,filename,fmt)imwrite(X,map,filename,fmt)imwrite(...,filename)imwite(...,Param1,Val1,Param2,Val2...)imcrop 剪切圖像
語法:I2=imcrop(I)X2=imcrop(X,map)RGB2=imcrop(RGB)I2=imcrop(I,rect)X2=imcrop(RGB,rect)[...]=imcrop(x,y,...)[A,rect]=imcrop(...)[x,y,A,rect]=imcrop(...)
6.impixel 確定像素顏色值
語法:P=impixel(I)P=impixel(X,map)P=impixel(RGB)P=impixel(I,c,r)P=impixel(X,map,c,r)P=impixel(RGB,c,r)[c,r,P]=impixel(...)P=impixel(x,y,I,xi,yi)P=impixel(x,y,RGB,xi,yi)P=impixel(x,y,X,map,xi,yi)[xi,yi,P]=impixel(x,y,...)
7.二進制圖像操作函數
applylut 在二進制圖像中利用lookup表進行行邊沿操作 語法:A=applylut(BW,LUT)bwarea 計算二進制圖像對象的面積 語法:total=bwarea(BW)bweuler 計算二進制圖像的歐拉數 語法:eul=bweuler(BW)
8.顏色空間轉換函數
hsv2rgb 轉換HSV值為RGB顏色空間:M=hsv2rgb(H)ntsc2rgb 轉換NTSC值為RGB顏色空間:rgbmap=ntsc2rgb(yiqmap)RGB=ntsc2rgb(YIQ)rgb2hsv 轉換RGB值為HSV顏色空間:cmap=rgb2hsv(M)rgb2ntsc 轉換RGB值為NTSC顏色空間:yiqmap=rgb2ntsc(rgbmap)YIQ=rgb2ntsc(RGB)rgb2ycbcr 轉換RGB值為YCbCr顏色空間:ycbcrmap=rgb2ycbcr(rgbmap)YCBCR=rgb2ycbcr(RGB)ycbcr2rgb 轉化YCbCr值為RGB顏色空間:rgbmap=ycbcr2rgb(ycbcrmap)RGB=ycbcr2rgb(YCBCR)
9.類型轉換函數
im2bw 轉換圖像為二進制圖像
語法:BW=im2bw(I,level)BW=im2bw(X,map,level)BW=im2bw(RGB,level)im2double 轉換圖像矩陣為雙精度型
語法:I2=im2double(I1)RGB2=im2double(RGB1)I=im2double(BW)X2=im2double(X1,'indexed')double 轉換數據為雙精度型 語法:double(X)unit8、unit16轉換數據為8位、16位無符號整型: i=unit8(x)i=unit16(x)im2unit8 轉換圖像陣列為8位無符號整型
語法:I2=im2unit8(I1)RGB2=im2unit8(RGB1)I=im2unit8(BW)X2=im2unit8(X1,'indexed')im2unit16 轉換圖像陣列為16位無符號整型
語法:I2=im2unit16(I1)RGB2=im2unit16(RGB1)I=im2unit16(BW)X2=im2unit16(X1,'indexed')
四、Matlab常用快捷鍵
1.在命令窗口(Command Window)中:
1)【上、下鍵】――切換到之前、之后的命令,可以重復按多次來達到你想要的命令
2)clc――清除命令窗口顯示的語句,此命令并不清空當前工作區的變量,僅僅是把屏幕上顯示出來的語句清除掉
3)clear――這個才是清空當前工作區的變量命令,常用語句clear all來完成 4)【Tab】鍵――在command窗口,輸入一個命令的前幾個字符,然后按tab鍵,會彈出前面含這幾個字符的所有命令,找到你要的命令,回車,就可以自動完成。目前討論結果是:matlab6.5版本中,如果候選命令超過100個,則不顯示。而在matlab7以后版本中,則沒有這個限制,均可正常提示 5)【Ctrl+C】(或【Ctrl+Break】)――在matlab程序運行過程中,可能由于程序編寫的失誤,導致程序不停的運行,在命令窗口輸入“Ctrl+C”可以將運行的程序停下來,而不需要將整個Matlab程序關掉。不過進行此操作的前提是能夠激活切換到命令窗口才行。6)edit+函數名 查看或編輯源文件 7)who 顯示當前變量名列表 8)whos 顯示變量詳細列表
9)which+函數名 證實該函數是否在當前路徑 10)what 列出當前路徑的所有matlab文件 11)load 加載外部文件 12)save 保存文件到外部 13)20.matlab的幫助函數: 14)help 15)help+函數名或help+函數類名 精確查詢 16)helpwin 打開幫助窗口 17)helpwin+函數名 精確查詢 18)helpdesk 打開幫助窗口 19)doc 打開幫助窗口
20)doc+函數名 打開幫助窗口,精確查詢
21)lookfor+關鍵字 這個是matlab中的谷歌,模糊查詢
2.在編輯器(Editor)中: 1)【Tab】(或【Ctrl+]】)――增加縮進(對多行有效)2)3)4)5)6)【Ctrl+[】--減少縮進(對多行有效)
【Ctrl+I】--自動縮進(即自動排版,對多行有效)【Ctrl+R】――注釋(對多行有效)【Ctrl+T】――去掉注釋(對多行有效)
【Ctrl+B】――括號配對檢查(對版本6.5有效,但版本7.0無效,不知道是取消了還是換了另外的快捷鍵,請大牛們指點,其他版本沒有測試過)7)【F12】――設置或取消斷點 8)【F5】――運行程序
五、Matlab學習心得
接觸Matlab一個多月,從剛開始連最基本的操作都不會,到現在能夠熟練地運用Matlab解決問題。雖然現在學到的也只是皮毛而已,離精通還相差甚遠,但至少為以后研究生期間的學習打下了良好的基礎。下面我就簡單的談一下這一個月來的學習感想。
首先,想要學好Matlab必須有一定數學基礎。Matlab軟件是與高等數學,計算機科學相結合的軟件。所以,當你學習Matlab時,你也得會一定的數學。你要盡量多的熟悉matlab自帶的函數,及其作用,因為matlab的自帶函數特別多,基本上能夠滿足一般的數據和矩陣的計算,所以基本上不用你自己編函數。這一點對你的程序非常有幫助,可以使你的程序簡單,運行效率高,可以節省很多時間。
其次,要注重基礎知識于實際操作結合。你把基本的知識看過之后,就需要找一個實際的程序來動手編一下,不要等所有的知識都學好之后再去編程,你要在編程的過程中學習,程序需要什么知識再去補充。在遇到問題時,不要光看別人如果解決,也不要光想怎么解決,自己坐下來,動手自己解決一下,那你就會把不是你的知識變成自己的知識。
最后,也是最重要的一點就是堅持。MATLAB涉及的領域太多,每個領域里面都缺乏足夠的專家分布在你周圍。那么我們很難有機會接觸到真正的高手,對我們的技術細節一一指點。在遇到實際問題時,就只能靠自己去摸索。常常是再堅持一兩個小時,就能夠解決你的問題。最大的成就感,就在付出了極大的心血和耐心,才取得一個艱難的小勝利。
第四篇:數據結構總結[推薦]
《數據結構與算法》課程學習總結報告
本學期開設的《數據結構與算法》課程已經告一段落,現就其知識點及其掌握情況、學習體會以及對該門課程的教學建議等方面進行學習總結。
一、《數據結構與算法》知識點
第一章是這門學科的基礎章節,從整體方面介紹了“數據結構和算法”,同時引入相關的學術概念和術語,如數據、數據元素、數據類型以及數據結構的定義。重點是數據結構的括邏輯結構、存儲結構和運算集合的含義及其相互聯系。數據結構和兩大邏輯結構的4四種常用存儲方法;邏輯結構分為四類:集合型、線性、樹形和圖形結構,數據元素的存儲結構分為:順序存儲、鏈接存儲、索引存儲和散列存儲四類。難點是算法復雜度的分析方法和性能的分析。
第二章詳細地分析了順序表。介紹了順序表的相關概念及其有關運算。基本運算有:初始化表、求表長、排序、元素的查找、插入及刪除等。元素查找方法有:簡單順序查找、二分查找和分塊查找。排序方法有:直接插入排序、希爾排序、冒泡排序、快速排序、直接選擇排序及歸并排序等,在各種算法思想的先分析后,要弄清各種算法的時間復雜度與空間性能的優點和缺點,在什么特定的場合適合哪種算法思想。最后介紹了順序串的概念,順序串是順序表的一個特例;區別在于組成順序串的數據元素是一組字符,其重點在于串的模式匹配。
第三章介紹鏈表。鏈表中數據元素的存儲不一定是連續的,還可以占用任意的、不連續的物理存儲區域。與順序表相比,鏈表的插入、刪除不需要移動元素,給算法的效率帶來較大的提高,且在存儲空間上有動態申請的優點。這一章中介紹了鏈表的節點結構、靜態與動態鏈表的概念、鏈表的基本運算(如求表長、插入、查找、刪除等)、單鏈表的建立(頭插法和尾插法)以及雙向循環鏈表的定義、結構、功能和基本算法。弄清其個運算的算法思想及其時間復雜度和空間性能。最后介紹了鏈表之中存儲結構在實際中的相關應用。
第四章,堆棧是運算受限制的線性結構。其基本運算方法與順序表和鏈表運算方法基本相同,不同的是堆棧須遵循“先進后出”的規則,對堆棧的操作只能在棧頂進行;堆棧在文字處理,匹配問題和算術表達式的求值問題方面的應用。
第五章,隊列是一種夠類似堆棧的線性結構。其基本運算方法與順序表和鏈表運算方法基本相同,不同的是堆棧須遵循“先進先出”的規則,對堆棧的操作只能在棧頂進行;其運算有入隊、出隊等操作。在介紹隊列時,提出了循環隊列的概念,以避免“假溢出”的現象。
第六章介紹了特殊矩陣和廣義表的概念與應用。其中,特殊矩陣包括對稱矩陣、三角矩陣、對角矩陣和稀疏矩陣,書中分別詳細介紹了它們的存儲結構。其中三元組和十字鏈表這兩種結構尤為重要;對著兩種結構的建立了應用要掌握。稀疏矩陣的應用包括轉置和加法運算等。最后介紹了廣義表的相關概念及存儲結構,關于它的應用,課本中舉了m元多項式的表示問題。
第七章二叉樹的知識是重點內容。在介紹有關概念時,提到了二叉樹的性質以及兩種特殊的二叉樹:完全二叉樹和滿二叉樹。接著介紹二叉樹的順序存儲和鏈接存儲以及生成算法。重點介紹二叉樹的遍歷算法(遞歸算法、先序、中序和后序遍歷非遞歸算法)和線索二叉樹。二叉樹的應用:基本算法、哈弗曼樹、二叉排序樹和堆排序,其中關于二叉排序樹和哈弗曼書的構建是重點。
第八章介紹了樹。樹與二叉樹是不同的概念。教材介紹了樹和森林的概念、遍歷和存儲結構,還有樹、森林和二叉樹的相互關系,樹或森林怎樣轉化成二叉樹,二叉樹又如何轉換為樹和森林等算法。
第九章,散列結構是一種查找效率很高的一種數據結構。本章的主要知識點有:散列結
構的概念及其存儲結構、散列函數、兩種沖突處理方法、線性探測散列和鏈地址散列的基本算法以及散列結構的查找性能分析。
最后一章介紹了圖的概念及其應用,是本書的難點。圖的存儲結構的知識點有:鄰接矩陣、鄰接表、逆鄰接表、十字鏈表和鄰接多重表。圖的遍歷包括圖的深度優先搜索遍歷和廣度優先搜索遍歷。其余知識點有:有向圖、連通圖、生成樹和森林、最短路徑問題和有向無環圖及其應用。有向無環圖重點理解AOV網和拓撲排序及其算法。
二、對各知識點的掌握情況
總體來看,對教材中的知識點理解較為完善,但各個章節均出現有個別知識點較為陌生的現象,對某些具體的問題和應用仍有一些模糊與措手。各個章節出現的知識點理解和掌握情況明確一下。
第一章中我對數據和數據結構的概念理解較為透徹,熟悉數據結構的邏輯結構和存儲結構。算法的時間、空間性能分析是重點,同樣也是難點,尤其是空間性能分析需要加強。在某些強大與復雜的算法面前的處理有些棘手。
第二章,順序表的概念、生成算法理解較為清晰,并且熟悉簡單順序查找和二分查找,對分塊查找較為含糊。刪除方面的問題比較容易些。排序問題中,由于冒泡排序在大一C語言課上已經學習過,再來學習感覺相對輕松些。對插入排序和選擇排序理解良好,但是,在實際運用中仍然出現明顯不熟練的現象。由于在歸并排序學習中感覺較吃力,現在對這種排序方法仍然非常模糊,所以需要花較多的時間來補習。此外串的模式匹配也是較難理解的一個地方。
第三章鏈表中,除對雙向循環鏈表這一知識點理解困難之外,在對鏈表進行插入刪除和排序相關操作上同順序表的操作基本相當。其他的知識點像單鏈表的建立和基本算法等都較為熟悉。
第四章和第五章有關堆棧以及隊列的知識點比較少,除有關算法較為特殊以外,其余算法都是先前學過的順序表和鏈表的知識,加上思想上較為重視,因此這部分內容是我對全書掌握最好的一部分。在一些實際問題的應用與處理方面,對其進行存儲結構的選擇還是需要認真考慮的。在算法的時間復雜度和空間性能的分析仍有些困難。
第六章的學習感覺較為困難的部分在于矩陣的應用上。在矩陣的存儲結構中,使用三元組表發相對較為簡單,而使用十字鏈表就有些困難了。但在某些問題的處理上又必須或從節省空間考慮采用十字鏈表來處理,想矩陣的加法運算。廣義表的定義還是比較容易理解的,其存儲結構也不難掌握,關于應用也只局限于在多項式的表示上。
第七章是全書的重點。在這一章中概念和定義都很多,有些很昏人但都很重要,要區分開來。二叉樹的性質容易懂卻很難記憶。對二叉樹的存儲結構和遍歷算法這部分內容掌握較好,能夠熟練運用。關于二叉排序樹和的哈弗曼樹卻相對有些壓力,其生成和對其關鍵字的插入和刪除時重點。
第八章關于樹的分析,首先要明確樹和二叉樹的區別,以及書中的相關定義和概念。關于二叉樹、樹和森林之間的轉換和遍歷方法是重點,但不算是難。接著就是數的存儲結構的選擇及轉化為二叉樹的算法,這部分有些吃力。再就介紹了特殊的樹-B樹,關于對B樹的操作,插入關鍵字是中帶領和難點。
第九章散列結構這一章理解比較完善的知識點有:基本概念和存儲結構。散列函數中直接定址法和除留余數法學得比較扎實,對數字分析法等方法則感覺較為陌生。對兩種沖突處理的算法思想的理解良好,問題在于用C語言描述上。
最后一章,圖及其應用中,相關定義及其概念很多,容易混淆,這就要慢慢來,仔細分辨。圖的鄰接矩陣、鄰接表表示法及其之間的轉換時重點和難點。而對十字鏈表和鄰接多重表的表示法則較為陌生。感覺理解較為吃力的內容有圖的遍歷(包括深度和廣度優先遍歷),以及最小生成樹的問題。最短路徑、AOV網、關鍵路徑、AOE網和拓撲排序的學習也是相對較輕松的。,三、學習體會
在學習開始,王教授就明確提出它不是一種計算機語言,不會介紹新的關鍵詞,而是通過學習可以設計出良好的算法,高效地組織數據。一個程序無論采用何種語言,其基本算法思想不會改變。聯系到在大一和大二上學期學習的C和C++語言,我深刻認識到了這一點。“軟件開發好比寫作文,計算機語言提供了許多華麗的辭藻,而數據結構則考慮如何將這些辭藻組織成一篇優秀的文章來。”在學習這門課中,要熟悉對算法思想的一些描述手段,包括文字描述、圖形描述和計算機語言描述等。因此,計算機語言基礎是必須的,因為它提供了一種重要的算法思想描述手段——機器可識別的描述。
這門課結束之后,我總結了學習中遇到的一些問題,最為突出的,書本上的知識與老師的講解都比較容易理解,但是當自己采用剛學的知識點編寫程序時卻感到十分棘手,有時表現在想不到適合題意的算法,有時表現在算法想出來后,只能將書本上原有的程序段謄寫到自己的程序中再加以必要的連接以完成程序的編寫。針對這一情況,我會嚴格要求自己,熟練掌握算法思想,盡量獨立完成程序的編寫與修改工作,只有這樣,才能夠提高運用知識,解決問題的能力。
四、對《數據結構與算法》課程教學的建議
1、建議在上課過程中加大隨堂練習的分量,以便學生能當堂消化課堂上學習的知識,也便于及時了解學生對知識點的掌握情況,同時有助于學生保持良好的精神狀態。
2、建議在課時允許的情況下,增加習題課的分量,通過課堂的習題講解,加深對知識點的掌握,同時對各知識點的運用有一個更為直觀和具體的認識。
以上便是我對《數據結構與算法》這門課的學習總結,我會抓緊時間將沒有吃透的知識點補齊。今后我仍然會繼續學習,克服學習中遇到的難關,在打牢基礎的前提下向更深入的層面邁進!
第五篇:Matlab學習總結
學Matlab有感
姓名:王鴻棟 學號:20090286 班級: 03310901 我對于計算機編程接觸的比較晚,也沒有特別大的興趣。不過對于Matlab這門課我還是很喜歡的。一是這個語言可以變出程序繪出函數的圖形,這就使得這個語言可以被“看見”,感覺比較親切,不是那么縹緲空虛的東西。二是這個語言卻是很“友好”,很人性化,像我剛學習這門語言,還什么都不會編的時候,我隨便打出了一句help,界面上就輸出了幫助文檔。三是這個語言的強大的功能,1.3G不是白給的,很多C、java里需要用循環語句來完成的,在Matlab里只需要一句話就可以搞定了,剛上這門課時老師說C一堂課講授的內容Matlab一句話就可以搞定了,看來不是假的。四是這門語言確實很有用,信號與系統課上學的很多內容都可以用Matlab來仿真,另外這門語言在很多其他的領域也都很有用,所以,我打算好好學習這門語言。
第一次交作業時我還只交上了兩道題,那時候對這門語言接觸得還比較少,但是就在交作業的那天我打算好好學習這門語言,而且在寫作業的時候我確實喜歡上了這門語言。雖然第一次由于時間倉促只交上了兩道題,可是那都是我自己寫的,我覺得只有這樣才能學到東西。第二天,在別人都在做第二次作業的時候,我卻仍然在做第一次作業,我打算把第一次的作業完整的寫一遍,即使這對我的分數一點幫助也沒有。第二次作業我提前好幾天就寫完了,雖然沒有完成全部的題目。我把第一第二次作業一起交了上去,我希望老師能幫我看一看。
上面只是對這門課程的一些懷念,課程已經結束了,不過我會繼續學習這門語言的。下面就針對這次作業的要求,給這門課提一些看法,畢竟這才是正題。MATLAB 產品族可以用來進行以下各種工作:
● 數值分析
● 數值和符號計算
● 工程與科學繪圖
● 控制系統的設計與仿真
● 數字圖像處理
● 數字信號處理
● 通訊系統設計與仿真
● 財務與金融工程
MATLAB 的應用范圍非常廣,包括信號和圖像處理、通訊、控制系統設計、測試和測量、財務建模和分析以及計算生物學等眾多應用領域。附加的工具箱(單獨提供的專用 MATLAB 函數集)擴展了 MATLAB 環境,以解決這些應用領域內特定類型的問題。說實在的想完全掌握全部的基本上是不可能的,就像dsp一樣,應用的范圍很廣,想一口吃可能不行,所以要結合專業來學習才好!
對于我們這些學習了C語言的學生,編程基本的語法學習起來很快的,和c語言很類似,而且是支持c語言函數的,或者說函數就是用c語言編的,完全是解釋性的語言,像打草稿一樣,可以一句句的編譯,看結果的。
等我們編到基本的熟悉之后就可以編輯函數了,-------這個其實用的不多,為了應用的話,老師建議開始編寫M文件,也就是把程序都寫在m文件里面,然后編譯,調試,根據錯誤信息來調試。
至于和專業相關的方面就說說自動化方面吧!和控制理論,fft,用的比較多,根軌跡,相平面,傳遞函數,拉普拉斯變換,奈氏曲線什么的,基本上都可以解決
03310901班
王鴻棟 20090286 對于授課方式,我覺得上課時老師是結合信號與系統來講的,就是說課程的定位就是交給我們解決信號與系統方面問題的一個方法。我覺得Matlab功能遠遠不止于此。而且老師在課上講程序都是一帶而過,我覺得講授的程序不必很多,一堂課只講幾個程序,但是對于每個程序,如果老師都能給我們進行分析,把這個程序將明白了,那么這堂課我們就能學到很多東西。而且這樣講課也不會使我們覺得枯燥。
對提高Matlab編程能力的方法,我想主要有以下三個: 1.查help 2.多上上論壇,搜索帖子、發帖子問人 3.閱讀別人、特別是牛人的程序
當然了,正如所有的程序語言一樣,“3分課本7分上機”,一定要動手才行,不能光看。多想、多思考、多嘗試,才是正路。
最后,整理一下常用的快捷鍵(用【】表示)或命令: 1.在命令窗口(Command Window)中:
1)【上、下鍵】――切換到之前、之后的命令,可以重復按多次來達到你想要的命令 2)clc――清除命令窗口顯示的語句,此命令并不清空當前工作區的變量,僅僅是把屏幕上顯示出來的語句清除掉
3)clear――這個才是清空當前工作區的變量命令,常用語句clear all來完成
4)【Tab】鍵――(在command窗口,輸入一個命令的前幾個字符,然后按tab鍵,會彈出前面含這幾個字符的所有命令,找到你要的命令,回車,就可以自動完成。目前討論結果是:Matlab6.5版本中,如果候選命令超過100個,則不顯示。而在Matlab7以后版本中,則沒有這個限制,均可正常提示
5)【Ctrl+C】(或【Ctrl+Break】)――在Matlab程序運行過程中,可能由于程序編寫的失誤,導致程序不停的運行,在命令窗口輸入“Ctrl+C”可以將運行的程序停下來,而不需要將整個Matlab程序關掉。不過進行此操作的前提是能夠激活切換到命令窗口才行,呵呵。
2.在編輯器(Editor)中: 1)【Tab】(或【Ctrl+]】)――增加縮進(對多行有效)2)【Ctrl+[】--減少縮進(對多行有效)
3)【Ctrl+I】--自動縮進(即自動排版,對多行有效)4)【Ctrl+R】――注釋(對多行有效)5)【Ctrl+T】――去掉注釋(對多行有效)
6)【Ctrl+B】――括號配對檢查(對版本6.5有效,但版本7.0無效,不知道是取消了還是換了另外的快捷鍵,請大牛們指點,其他版本沒有測試過)
7)【F12】――設置或取消斷點 8)【F5】――運行程序
其余的例如在Debug狀態下的快捷鍵可以自己看菜單。
就說這么多,通過這個小學期,我覺得自己真的學到了很多!
03310901班
王鴻棟 20090286