資源描述:
《給matlab初學(xué)者的建議》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫(kù)。
1、在網(wǎng)上看到一下關(guān)于matlab學(xué)習(xí)體會(huì)的心得,覺(jué)得不錯(cuò),就推薦上來(lái)了!:lol/*****************************************************************************************************/(一)寫(xiě)給學(xué)習(xí)matlab的新手們本人接觸matlab已經(jīng)有5年多的時(shí)間了,一直想寫(xiě)點(diǎn)東西,但是之前不知道放在哪里才能發(fā)揮它的最大作用,直到幾天前碰上了這個(gè)論壇(有點(diǎn)像諸葛亮遇見(jiàn)姜維,哈哈)。廢話不說(shuō),我想借貴論壇寶地,寫(xiě)一些經(jīng)驗(yàn)給使用matlab的新手們,當(dāng)然了,老大們也可以看看,不嫌棄我
2、寫(xiě)得粗糙的話還可以指點(diǎn)一下,先謝過(guò)了~~~~首先我想說(shuō)的是,matlab跟其他語(yǔ)言不一樣(我用的比較多的編程語(yǔ)言,除了matlab就應(yīng)該是c或c++了,VB和Delphi也接觸過(guò),我想版面(matlab版)大部分人也差不多),如果你抱著“把其他語(yǔ)言的思想運(yùn)用在matlab里面”的話,那么我想,即使程序運(yùn)行不出錯(cuò),也很難把握matlab的精髓,也就很難發(fā)揮matlab的作用了。所以,如果你是希望matlab作為VC的附屬品,即你不想在matlab上面花太多功夫,只純粹想用matlab來(lái)完成VC做不了或很難做成的任務(wù)的話,那么,這篇文章你也不需要再閱讀下去了;如果你是希望掌
3、握一門語(yǔ)言、一個(gè)工具,使它更有效為你服務(wù)的話,那么,希望本文對(duì)你有所幫助。Matlab是一個(gè)基于矩陣運(yùn)算的軟件,這恐怕是眾所周知的事情了,但是,真正在運(yùn)用的時(shí)候(就是在編程的時(shí)候),許多人(特別是初學(xué)者)往往沒(méi)有注意到這個(gè)問(wèn)題,因此,for循環(huán)(包括while循環(huán))滿天飛…………..這不僅是暴殄天物(沒(méi)有發(fā)揮matlab所長(zhǎng)),還浪費(fèi)了你寶貴的時(shí)間。對(duì)此,版友MVH在他的“MATLAB小技巧”一文中也有所涉及,雷同的東西我也就不重復(fù)了,matlab的“幫助”里面也有相關(guān)的指示。我這里想說(shuō)的一點(diǎn)是,初學(xué)者往往在初始化矩陣的時(shí)候注意到這個(gè)問(wèn)題,懂得了使用矩陣而不是循環(huán)來(lái)賦值
4、,但是,在其他環(huán)節(jié)上,就很容易疏忽,或者說(shuō),仍然沒(méi)有擺脫C++的思想。舉個(gè)例子吧,下面的代碼是我的一個(gè)師弟寫(xiě)的,我想他接觸matlab也有2、3年時(shí)間了(在此說(shuō)明一下,接觸2、3年并不是表示每天都會(huì)跟matlab打交道,我本人也不是,只是在一年某幾個(gè)時(shí)間段里面連續(xù)使用),但是仍然會(huì)出現(xiàn)類似的問(wèn)題:J=0;lt=size(imf1,2);for(i=1:lt)if(abs(imf1(i))>1)J=1;breakendend上面的代碼實(shí)現(xiàn)了一個(gè)目的――檢查信號(hào)imf1(一個(gè)向量)是否存在絕對(duì)值大于1的點(diǎn),這顯然是基于C++的思想寫(xiě)出來(lái)的。如果在matlab下面,其實(shí)用兩個(gè)
5、語(yǔ)句就足夠了(當(dāng)然,可以合并為一個(gè)):q=find(imf1>1);J=~isempty(q);這樣的修改帶來(lái)的好處是很可觀的。又如:forj=1:numimf1(start1+j)=2*li1(j+1)-imf1(start1+j);end這是一個(gè)對(duì)稱翻折的問(wèn)題,它完全可以用以下這個(gè)語(yǔ)句簡(jiǎn)潔表示:imf1(start1+1:start1+num)=2*li1(2:num+1)-imf1(start1+1:start1+num);因此,如果是新手,可以先用循環(huán)(基于C++的思想)來(lái)編寫(xiě)代碼,然后看看能否用matlab的語(yǔ)言(基于矩陣的思想)來(lái)改進(jìn)。當(dāng)然,這樣做的前提是你
6、對(duì)matlab提供的一些函數(shù)比較熟悉才行,這些函數(shù)在matlab的“幫助”那里搜索“FunctionsUsedinVectorizing”就可以找到一些,其他的也可以找相關(guān)的書(shū)籍(沒(méi)找到?不可能,電子版總可以下載到的)對(duì)提高matlab編程能力的方法,我想主要有以下三個(gè):1.查help2.多上上論壇,搜索帖子、發(fā)帖子問(wèn)人3.閱讀別人、特別是牛人的程序當(dāng)然正如所有的程序語(yǔ)言一樣,“3分課本7分上機(jī)”,一定要?jiǎng)邮植判?,不能光看。多想、多思考、多嘗試,才是正路。最后,整理一下常用的快捷鍵(用【】表示)或命令:1.在命令窗口(CommandWindow)中:1)【上、下鍵】――
7、切換到之前、之后的命令,可以重復(fù)按多次來(lái)達(dá)到你想要的命令2)clc――清除命令窗口顯示的語(yǔ)句,此命令并不清空當(dāng)前工作區(qū)的變量,僅僅是把屏幕上顯示出來(lái)的語(yǔ)句清除掉3)clear――這個(gè)才是清空當(dāng)前工作區(qū)的變量命令,常用語(yǔ)句clearall來(lái)完成4)【Tab】鍵――(轉(zhuǎn)自版友心燈)在matlab@hit.edu.cn看到的:在command窗口,輸入一個(gè)命令的前幾個(gè)字符,然后按tab鍵,會(huì)彈出前面含這幾個(gè)字符的所有命令,找到你要的命令,回車,就可以自動(dòng)完成。目前討論結(jié)果是:matlab6.5版本中,如果候選命令超過(guò)100個(gè),則不顯示。而在ma