第一篇:學習matlab的吐血經驗
經驗之一:
Matlab函數句柄、feval函數和inline函數的使用 MATLAB函數句柄
函數句柄(Function handle)是MATLAB的一種數據類型。
包含了函數的路徑、函數名、類型以及可能存在的重載方法;
引入函數句柄是為了使feval及借助于它的泛函指令工作更可靠;使“函數調用”像“變量調用”一樣方便靈活;提高函數調用速度,特別在反復調用情況下更顯效率;提高軟件重用性,擴大子函數和私用函數的可調用范圍;迅速獲得同名重載函數的位置、類型信息。
-------
可以與變量一樣方便地使用:比如說,在現在這個目錄運行時,創建了本目錄一個函數的句柄,當轉到其他目錄時,可以通過函數句柄直接調用上一個目錄的函數,而不需要把那個函數文件復制過來,因為創建的函數句柄中已經包含了路徑信息;
提高函數調用速度:因為matlab對函數的調用每次都是要搜索所有的路徑,從set path中可以看到,路徑是非常的多的,所以如果一個函數在程序中需要經常用到的話,使用函數句柄,對速度會有提高的;
-------
MATLAB中函數句柄的使用使得函數也可以成為輸入變量,并且能很方便的調用,提高函數的可用性和獨立性。
函數句柄實際上提供了一種間接調用函數的方法。創建函數句柄需要用到操作符@
創建函數句柄的語法:
fhandle = @function_filename 調用函數時就可以調用該句柄,可以實現同樣的功能。
例如fhandle = @sin就創建了sin的句柄,輸入fhandle(x)其實就是sin(x)的功能。
如
% %-----------------
fhandle=@sin
fhandle(pi)sin(pi)
% %-----------------
例如:
新建M文件f1.m
function y=f1(X)
x1=X(1);x2=X(2);y=x1^2+x1*x2;
新建M文件ftest.m
function Y=ftest(f,X)
syms x1 x2;F=f([x1,x2]);v=[x1,x2];grad=jacobian(F,v);Y=subs(grad,v,X);
在MATLAB命令窗口輸入Y=ftest(@f1,[2,1]),得到結果:
Y =
2
此處@f1即為函數f1的句柄,可以用class(@f1)判斷變量的類型,得到ans = function_handle即函數句柄。函數ftest是求一個二維函數在指定點的梯度值。我們可以替換目標函數為f2或其他函數同樣可以求得梯度。這樣函數ftest就可以適用于任何二維函數而不必做改動了。
feval函數如何理解
feval函數的最通常的應用是以下形式:
feval('functionname',parameter),舉個簡單的例子:
比如要計算sin(2),當然可以直接用命令y=sin(2);利用feval,還可以這樣來做: y=feval('sin',2);另外這里的函數名字還可以是一個函數句柄,即h=@sin;y=feval(h,2);或者直接寫成y=feval(@sin,2);
內聯函數(inline function)
inline函數不是函數句柄, 是另外一種類型, 它也可以用變量來表示函數, 用法也和一般函數, 函數句柄是一樣的.內聯函數和普通的函數句柄,準確說跟匿名函數比較類似,可以通過一個函數表達式近而得到該函數。
在matlab中創建局部函數時,可用inline。優點是不必將其儲存為一個單獨文件。在運用中有幾點限制:不能調用另一個 inline函數,只能由一個matlab表達式組成,并且只能返回一個變量---顯然不允許[u,v]這種形式。因而,任何要求邏輯運算或乘法運算以求得最終結果的場合,都不能應用inline。
語法格式如下: 變量名=inline(表達式); 變量名=inline('函數表達式', '變量名1','變量名2',...,'變量名n');(推薦)
例如:
a='x+y';
f=inline(a); f(2,3)
ans =
或者:
f=inline('x+y','x','y');
f(2,3)
ans =
inline函數可以對某個變量調用數組,如:
Fofx=inline(‘x.^2*cos(a*x)-b’ , ‘x’,’a’,’b’);
g= Fofx([pi/3 pi/3.5],4,1)
系統輸出為:g=-1.5483-1.7259
經驗之二:
break就是直接跳出該層循環
continue就是直接進入該層循環的下一次迭代 return就是直接退出程序或函數返回了
經驗之三:
Matlab中添加高斯白噪聲(Learning to use Matlab)MATLAB中產生高斯白噪聲非常方便,可以直接應用兩個函數,一個是WGN,另一個是AWGN。WGN用于產生高斯白噪聲,AWGN則用于在某一信號中加入高斯白噪聲。
1.WGN:產生高斯白噪聲
y = wgn(m,n,p)產生一個m行n列的高斯白噪聲的矩陣,p以dBW為單位指定輸出噪聲的強度。
y = wgn(m,n,p,imp)以歐姆(Ohm)為單位指定負載阻抗。y = wgn(m,n,p,imp,state)重置RANDN的狀態。
在數值變量后還可附加一些標志性參數:
y = wgn(?,POWERTYPE)指定p的單位。POWERTYPE可以是'dBW', 'dBm'或'linear'。線性強度(linear power)以瓦特(Watt)為單位。
y = wgn(?,OUTPUTTYPE)指定輸出類型。OUTPUTTYPE可以是'real'或'complex'。2.AWGN:在某一信號中加入高斯白噪聲
y = awgn(x,SNR)在信號x中加入高斯白噪聲。信噪比SNR以dB為單位。x的強度假定為0dBW。如果x是復數,就加入復噪聲。y = awgn(x,SNR,SIGPOWER)如果SIGPOWER是數值,則其代表以dBW為單位的信號強度;如果SIGPOWER為'measured',則函數將在加入噪聲之前測定信號強度。y = awgn(x,SNR,SIGPOWER,STATE)重置RANDN的狀態。y = awgn(?,POWERTYPE)指定SNR和SIGPOWER的單位。POWERTYPE可以是'dB'或'linear'。如果POWERTYPE是'dB',那么SNR以dB為單位,而SIGPOWER以dBW為單位。如果POWERTYPE是'linear',那么SNR作為比值來度量,而SIGPOWER以瓦特為單位。
經驗之四:
error(‘ 報錯跳出’)nargin 定義的函數中應該輸入的變量個數
經驗之五 rref是把矩陣化為最簡矩陣的函數 用det計算方陣的行列式值 用rank計算矩陣的特征值
drawnow是刷新屏幕的語句;
Imfinfo 可以查看圖片的所在的位置信息
經驗之六:
求解Ax=d的解x 1.LU分解
% file: myLU.m function [L,U]=myLU(A)%實現對矩陣A的LU分解,L為下三角矩陣 A [n,n]=size(A);L=zeros(n,n);U=zeros(n,n);for i=1:n L(i,i)=1;end for k=1:n for j=k:n U(k,j)=A(k,j)-sum(L(k,1:k-1).*U(1:k-1,j)');end for i=k+1:n L(i,k)=(A(i,k)-sum(L(i,1:k-1).*U(1:k-1,k)'))/U(k,k);end end 2.用分解獲得的L,U求解x ?
[L,U] = myLU(A)
[n,m]=size(A)
y(1)=d(1);for i=2:n for j=1:i-1 d(i)=d(i)-L(i,j)*y(j);end y(i)=d(i);end x(n)=y(n)/U(n,n);for i=(n-1):-1:1 for j=n:-1:i+1 y(i)=y(i)-U(i,j)*x(j);end x(i)=y(i)/U(i,i);end
經驗之七:
對于用imread讀回來的圖片信息 例如 [123,12,3];123 12 分別是圖片的寬高 也是一個三維度的矩陣 包含了 圖片的色度信息
吐血經驗之八:
%如何設置圖片的大小 clear a=imread('01.jpg');%讀入一張圖片
b=imresize(a,[100 200]);%設置你想要的大小
imwrite(b,'02.jpg');%按改變后的大小輸出你的圖片數據
%GIF動畫文件生成
I=cell(1,30);%這個好像是創99個房間用來一個放圖片信息 這里值得注意圖片是一個三維矩陣奧 for b=1:30 m1=imread([int2str(b),'.jpg']);%m1是一個公共變量會不停的被下一張圖片信息覆蓋最后是最后一張圖片的信息 I=m1;%I{1}。。I{99}就是每一張圖片的信息 end c=cell(1,30);[I{1},c{1}]=rgb2ind(I{1},256);imwrite(I{1},c{1},'test1.GIF','gif','Loopcount',inf,'DelayTime',0.4);for i=2:30;[I{i},c{i}]=rgb2ind(I{i},256);imwrite(I{i},c{i},'test1.GIF','gif','WriteMode','append','DelayTime',0.4);end;
經驗之九:
Sum的用法 a=sum(x);%列求和 a=sum(x,2);%行求和 a=sum(x(:));%矩陣求和
經驗之九:
http://
這個有很多很好地的函數用法!
大吐血經驗之十:
Excel和matlab數據的導入與導出
xlswrite('tj.xlsx',W,'B3:I5');把matlab中產生的數據W導入到制定的tj.xlsx 對于制定區域的格式 要當心
a=xlsread('tj.xlsx',W,'B3:I5');
第二篇:matlab學習心得體會
Matlab學習心得
班級:機械124 姓名:萬明男
學號:2012093386 電話:***
matlab學習心得體會
MATLAB中有豐富的圖形處理能力,提供了繪制各種圖形、圖像數據的函數。他提供了一組繪制二維和三維曲線的函數,他們還可以對圖形進行旋轉、縮放等操作。MATLAB內部還包含豐富的數學函數和數據類型,使用方便且功能非常強大。本學期通過對MATLAB的系統環境,數據的各種運算,矩陣的分析和處理,程序設計,繪圖,數值計算及符號運算的學習,初步掌握了MATLAB的實用方法。通過理論課的講解與實驗課的操作,使我在短時間內學會使用MATLAB,同時,通過上機實驗,對理論知識的復習鞏固實踐,可以自己根據例題編寫設計簡單的程序來實現不同的功能,繪制出比較滿意的二維三維圖形,在實踐中找到樂趣。MATLAB是一個實用性很強,操作相對容易,比較完善的工具軟件,使用起來比較方便,通過操作可以很快看到結果,能夠清晰的感覺到成功與失敗,雖然課程中也會出現一些小問題,但是很喜歡這門課程。
學習matlab是聽說它是一個功能強大的數學軟件,但是正被微積分的計算纏身,聽說有一個高級的計算器當然高興,以后可以偷懶了,當然現在不能偷懶。聽說關于自動化的計算特別復雜,如果有一種軟件能幫忙解題,那是一種極大的解脫,有益于縮短研究時間。目前我只知道有三種數學軟件,都是國外的,沒有國內的,差距挺大的。matlab學起來挺順手的,比C語言簡單。但是深入學習的時候卻困難重重,因為很多知識都沒有學習,就算知道那些函數,也沒有什么用處。老師布置的作業難度大,寫一篇實驗,大一什么都不會,寫一篇這種論文談何容易。最多也就會一些數值計算、符號計算、簡單繪圖,根本不會什么實驗。學習matlab體會最多的是這個軟件的功能強大,好多數學題都被輕易的解出。但是有一點遺憾,不知是我不會用,還是它沒個功能,已知空間的電荷分布,求空間的電場分布。其中電場分布是無法用函數表達式表示。我知道計算機肯定可以實現,但是這個軟件能不能實現就不知道了,我看過許多資料,但是在這方matlab學習心得體會三:學習matlab的心得,這是我在學習的過程中的一些技巧,或許對你有幫助.1,如果你要是不是計算機轉業的,只是為了方便自己的工作或學習,那么你沒有必要把matlab教程全部學會,只需要學你需要的那部分即可,比如,繪圖,矩陣運算,等等,根據你個人的需要而定,但是基本命令、數據類型、基本的程序結構(條件語句,循環語句,嵌套)、文件的IO是必須看的,因為任何一個程序都需要這幾個基本的塊。
2,你最好找一個熟悉編程的人來輔助你的學習,這就包括很多編程的技巧問題,程序的結構設計問題,對于程序的運行效率非常有幫助。有的時候,你編出來的程序,能夠運行,但是耗時太長,也就是說你的程序沒有錯,但是不適合實際?;蛘哒f,對于規模小的問題能夠解決,但是規模大一點的問題就需要很長很長的時間,這就需要對程序的結構和算法問題進行改進(親身體會,編完一個程序,小的例子可以運行出結果,但是大例子需要很長時間,所以必須要改進一下)。
3,你需要找一本matlab的函數工具詞典,就像漢語詞典一樣,你要盡量多的熟悉matlab自帶的函數,及其作用,因為matlab的自帶函數特別多,基本上能夠滿足一般的數據和矩陣的計算,所以基本上不用你自己編函數(如vb中,大部分的函數都需要自己編)。這一點對你的程序非常有幫助,可以使你的程序簡單,運行效率高,可以節省很多時間(親身體會)。切記!!4,你把基本的知識看過之后,就需要找一個實際的程序來動手編一下,不要等所有的知識都學好之后再去編程,你要在編程的過程中學習,程序需要什么知識再去補充(這一條是別人教我的,很管用),編程是一點一點積累的,所以你要需做一些隨手筆記什么的。
5,編程問題最頭疼的不是編程序,而是調程序,所以在你的程序編完之后,一定要進行驗證其正確性,你要盡量多的設想你的問題的復雜性,當然,要一步一步復雜,這樣才能保證你的程序的適用性很強。
6.文本文件與函數文件之間的區別
因為MATLAB本身可以被認為是一種高級語言,所以用它可編寫寫出具有特殊意義的磁盤文件來。這些磁盤文件由一系列的MATLAB語句組成,它既可能是由一系列窗口命令語句構成的文本文件,又可以是由各種控制語句和說明語句構成的函數文件。由于它們都是有ASCII碼構成的,其擴展名均為“.m”,故統稱為M文件。文本文件有一系列的MATLAB語句組成,它類似與DOS下的批處理文件,在MATLAB地提示下直接鍵入文本文件名,便可自動執行文件中的一系列命令,直至給出最終結果。文本文件在工作空間中運算的變量為全局變量。然而函數文件的功能是建立一個函數,且這個函數可以同MATLAB的庫函數一樣使用,它與文本文件不同,在一般情況下不能單獨鍵入函數文件的文件名運行一個函數文件,它必須由其他語句來調用,函數文件允許有多個輸入參數和多個輸出參數值。所以在這兩個不同之間的文件之間必須一定要加以區別開來,我一般最先看到的是第一行是否function開頭的語句,且是不是存在函數名和輸入形式參數和輸出形式參數,一般沒有這一行的磁盤文件就是文本文件?;驹谶\行的時候函數文件中定義的變量為局部變量,也就是說它只在函數內有效。即在該函數返回后,這些變量會自動在MATLAB工作空間中清除掉,這與文本文件不同的,但可通過命令global<變量>來定義一個全局變量。7.MATLAB繪圖功能
如今繪圖功能的運用已經普遍化,如今MATLAB被控制界廣泛接受正是因為它能夠提供了十分方便的一系列繪圖命令,所以學習畫圖這一部分一定需要認真的學習,另外學習做好的工具就是要與實踐相結合,多學多畫,可為什么修改之后曲線變了 原因是步長改了,在第一次的命令窗口中步長為0.1第二次沒有設定步長,系統卻沒有自動設定合理的步長,給以的是系統設定的步長為1,所以實驗時自己有必要要給出步長。所以在不同的步長的時候得到的圖形是不盡相同的,只有提供的合理的步長參數,對于一個系統的仿真才能得到合理的圖形。另外要學會運用hold on 以及hold off在繪圖時候的功能,增加網格也可以為測量提供簡要的標準。
第三篇: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
第四篇:matlab學習心得體會
最近在學習matlab,一直不入其法門。從網上看到了一些大蝦的經驗心得,感觸頗深,轉貼過來,希望給初學者有一定的指引。
一)寫給學習matlab 的新手們 作者:eight(八)來源振動論壇
本人接觸matlab已經有5年多的時間了,一直想寫點東西,但是之前不知道放在哪里才能發揮它的最大作用,直到幾天前碰上了這個論壇(有點像諸葛亮遇見姜維,哈哈)。
廢話不說,我想借貴論壇寶地,寫一些經驗給使用matlab的新手們,當然了,老大們也可以看看,不嫌棄我寫得粗糙的話還可以指點一下,先謝過了~~~~
首先我想說的是,matlab跟其他語言不一樣(我用的比較多的編程語言,除了matlab就應該是c或c++了,VB和Delphi也接觸過,我想版面(matlab版)大部分人也差不多),如果你抱著“把其他語言的思想運用在matlab里面”的話,那么我想,即使程序運行不出錯,也很難把握matlab的精髓,也就很難發揮matlab的作用了。所以,如果你是希望matlab作為VC的附屬品,即你不想在matlab上面花太多功夫,只純粹想用matlab來完成VC做不了或很難做成的任務的話,那么,這篇文章你也不需要再閱讀下去了;如果你是希望掌握一門語言、一個工具,使它更有效為你服務的話,那么,希望本文對你有所幫助。
Matlab是一個基于矩陣運算的軟件,這恐怕是眾所周知的事情了,但是,真正在運用的時候(就是在編程的時候),許多人(特別是初學者)往往沒有注意到這個問題,因此,for循環(包括while循環)滿天飛????..這不僅是暴殄天物(沒有發揮matlab所長),還浪費了你寶貴的時間。對此,版友MVH在他的“MATLAB 小技巧”一文中也有所涉及,雷同的東西我也就不重復了,matlab的“幫助”里面也有相關的指示。我這里想說的一點是,初學者往往在初始化矩陣的時候注意到這個問題,懂得了使用矩陣而不是循環來賦值,但是,在其他環節上,就很容易疏忽,或者說,仍然沒有擺脫C++的思想。舉個例子吧,下面的代碼是我的一個師弟寫的,我想他接觸matlab也有2、3年時間了(在此說明一下,接觸2、3年并不是表示每天都會跟matlab打交道,我本人也不是,只是在一年某幾個時間段里面連續使用),但是仍然會出現類似的問題:
J = 0;lt = size(imf1,2);for(i = 1:lt)if(abs(imf1(i))> 1)J = 1;break end end
上面的代碼實現了一個目的――檢查信號imf1(一個向量)是否存在絕對值大于1的點,這顯然是基于C++的思想寫出來的。如果在matlab下面,其實用兩個語句就足夠了(當然,可以合并為一個):
q = find(imf1>1);J = ~isempty(q);
這樣的修改帶來的好處是很可觀的。
又如:
for j = 1:num imf1(start1+j)= 2*li1(j+1)imf1(start1+1:start1+num);
因此,如果是新手,可以先用循環(基于C++的思想)來編寫代碼,然后看看能否用matlab的語言(基于矩陣的思想)來改進。當然,這樣做的前提是你對matlab提供的一些函數比較熟悉才行,這些函數在matlab的“幫助”那里搜索“Functions Used in Vectorizing”就可以找到一些,其他的也可以找相關的書籍(沒找到?不可能,電子版總可以下載到的)
對提高matlab編程能力的方法,我想主要有以下三個: 1.查help 2.多上上論壇,搜索帖子、發帖子問人 3.閱讀別人、特別是牛人的程序
當然了,正如所有的程序語言一樣,“3分課本7分上機”,一定要動手才行,不能光看。多想、多思考、多嘗試,才是正路。
最后,整理一下常用的快捷鍵(用【】表示)或命令: 1.在命令窗口(Command Window)中:
1)【上、下鍵】――切換到之前、之后的命令,可以重復按多次來達到你想要的命令
2)clc――清除命令窗口顯示的語句,此命令并不清空當前工作區的變量,僅僅是把屏幕上顯示出來的語句清除掉
3)clear――這個才是清空當前工作區的變量命令,常用語句clear all來完成
4)【Tab】鍵――(轉自版友心燈)在matlab@hit.edu.cn看到的:在command窗口,輸入一個命令的前幾個字符,然后按tab鍵,會彈出前面含這幾個字符的所有命令,找到你要的命令,回車,就可以自動完成。目前討論結果是:matlab6.5版本中,如果候選命令超過100個,則不顯示。而在matlab7以后版本中,則沒有這個限制,均可正常提示 5)【Ctrl+C】(或【Ctrl+Break】)――(轉自版友yangjin_ren)在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狀態下的快捷鍵就不多說了,自己看菜單Debug吧
累了,有時間再寫吧。希望大家多交流~~~~~~
Coming:(以下東西都是一年前做的了,不知道能否記起,呵呵)
1)關于神經網絡的――調用matlab的nntool命令后的使用問題(我做的時候沒有看過其他書籍或資料,是自己閉門造車的結果,如果寫之前發現其他書籍有相關介紹的話就不寫了)
2)關于外部接口的――matlab與C++Builder的接口,想詳細介紹如何利用matcom 4.5在C++Builder中調用matlab的代碼以及matcom的一些技巧。由于我不是搞項目開發的(搞科研、搞課題的),所以對VC不熟悉,大學的時候學過一點,不過我想對于搞科研來說C++Builder就足夠了,免去很多麻煩,Builder在界面設計和數據庫連接上面(我只接觸過這兩方面)還是做得不錯的。同樣,如果發現其他書籍上有類似的東西就不寫了 3)GUI方面也寫寫吧,只是一點點心得或者體會,呵呵,這個相對簡單些,篇幅相對要少些。
真正接觸matlab一年左右,我很喜歡上了matlab的簡單的語法,易于繪制圖形,gui編
程也非常容易, 并且功能強大的開放式的toolbox。因此,盡管我一直沒有這方面的應用,但是我還是對
它非常感興趣?,F
將個人的matlab的一點學習體會列在這里,愿能夠對大家(特別是初學者)起到一點兒微薄 的作用也好。
1.help:最有效的命令(參閱了瀚海mathtools的 starrynight網友的文章)
其實,可以這樣說吧,如果離開matlab軟件,我想我自己是基本上什么都不會。一遇
到什么問題,通常
我的第一反應是:help,就先說說自己對help的一些常用方法吧。1)命令窗口直接敲“help”,你就可以得到本地機器上matlab的基本的幫助信息。
2)對于某些不是很明確的命令,只知道大體所屬范圍,譬如說某個工具箱,直接在
命令窗口中敲入
help toolboxname,一幫可以得到本工具箱有關的信息:版本號,函數名等。3)知道函數名,直接用help funname就可以得到相應的幫助信息。
2.see also:不可小瞧的關聯
在用help命令的時候,可能因為我們開始估計的方向不一定完全正確,在列出的幫
助信息中沒有直接
給出的我們要找的東西,但是我們一定不要忽略了在幫助的最后列出的see also。譬如:曾經遇到一個畫橢球的問題。剛開始我以為這個命令函數應該在graph3d中給
出的(順帶提一句,只用help的時候我們就可以看到matlabgraph3dGenerate ellipsoid。
3.lookfor: matlab中的google
當我們很多什么頭緒都沒有的時候,我們可以求助于它,往往會收到意想不到的效果。
譬如:曾經在gui編程的時候,遇到過這樣一個問題:想拖動鼠標時,要出現一個方
框,就像你在桌面
上拖動鼠標,會出現虛線框一樣。當初我也剛開始一定都不知道該查找什么東西,后來
想起用它了。于是乎,>> lookfor Rectangle(很不好意思,當時這個矩形我還是在金山詞霸中搞定的-_-)
。果然,在其中就找到
這樣一條信息:GETRECT Select rectangle with mouse.^_^
4.get,set: GUI object 屬性的幫手
在GUI編程中,我們可能有時候想改變某些object的屬性,或者想讓它安裝自己的
想法實現,但是我們又不
記得這些object的屬性,更別提怎么設置他們的值了。這時,可以用 get(handles)得
到此對象的所有的屬性
及其當前值。用set(handles)可以得到對象所有可以設置的屬性及其可能的取值。找
到我們需要的屬性名字和
可能的取值之后,就意義用 get(handles,‘propertyname’)取得此屬性的值,用set(handles,‘propertyname’,values)設置此對象此屬性的值。
5.Edit: 查看m源文件的助手
在應用matlab過程中,可能我們想看看它的m源文件,當然用editor定位打開也行,但是我經常采用的式直接
在command窗口中用edit funname.m,就省去了定位的麻煩。
6.其他常用命令:which,what等
which:定位指定的函數和文件,最好帶上參數-all,以便顯示更加多的信息 what: 獲得指定目錄的m文件,mex文件以及mat文件名列表
7.各個高校bbs的mathtools版
誰都不可能什么都懂,但是永遠記住這樣一句話:Two heads are better than one.多向他人請教,多相
互討論,這不只是在于解決matlab的問題上。我最經常去的bbs有:.瀚海星云(http://fbbs.ustc.edu.cn/的mathtools版
.水木清華(http://文宇工作室
5)http://sh.netsh.com/bbs/5186/ matlab語言與應用,薛定宇的一個論壇 6)http://www.tmdps.cn/resource/newlk.asp中國學術交流園地,除了matla b有關外,還有很多其他的 專業的文章。
最后一條,要大膽的去試,哪怕只有一丁點兒可能。
譬如,早些時候,有朋友問我:我用什么命令可以查找所建立網絡的屬性的含義,比如說:我建立網絡net=newff(minmax(p),[3,1], {'tansig','purelin'},'traingda');想看看net.trainParam。lr_inc屬性是啥含義用什
么命令查看呢?
當時,我根本連練習都沒有用matlab的神經網絡工具箱的東西練習過。我help newff也沒有結果,后來實在沒有辦法,就試著help參數值traingda,沒有想到還居然真的就找到答案了。
還有,曾經有朋友想把waitbar的默認顏色的紅色改掉,我用help 沒有發現可以改
變其填充色的property,后來
我看了waitbar.m,發現其填充色本來就不試一個可變參數,但是既然發現了是什么地方,就可以自己改變的,這都得益于matlab 的開放性。這也為我們提供了很大的靈活性(在他的基礎上,我們可以做很少的變換,就自己寫一個填充色可以以屬性輸入而改變的waitbar的)
第五篇:matlab學習心得體會
數值運算
1.cd顯示當前的工作目錄,dir列出當前目錄下的子文件或子目錄,home將光標移動到左上角,type列出所有的文件內容。
2.特殊矩陣的生成:
3.linspace生成矩陣:
(1)linspace(a,b):生成100個數據的向量;
(2)linspace(a,b,n):生成n個元素的向量,線性分布; 4.logspace生成矩陣:
(1)logspace(a,b)生成50個對數元素的向量,x(1)=10^a,x(50)=10^b;
(2)logspace(a,b,n):同linspace的用法; 5.指數與對數函數:
6.復數函數:
7.基本數組函數:
8.矩陣變換函數:
9.數據的輸出格式由format命令來控制,但是只是影響其顯示的結果,對計算結果或者是存儲沒有影響:
10.常用的變量和常量:
eps:浮點運算的精確程度,是MATLAB中的計算誤差;
realmax:計算機能夠顯示的最大的浮點數;realmin:同其相對應; 11.一些特殊的標識符:
12.bar條形圖:
13.幾種特殊的圖形顏色矩陣:
14.照相制圖的函數:
15.axis ij:設置坐標為矩陣格式,坐標原點在左上角;axis為默認值; 16.坐標設置命令:
17.光源設置:
18.字符處理函數:
19.矩陣分解:
20.矩陣函數:
21.