資源描述:
《matlab常見(jiàn)語(yǔ)法錯(cuò)誤》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、Matlab常見(jiàn)語(yǔ)法錯(cuò)誤Subscriptindicesmusteitherberealpositiveintegersorlogicals中文解釋?zhuān)合聵?biāo)索引必須是正整數(shù)類(lèi)型或者邏輯類(lèi)型出錯(cuò)原因:在訪問(wèn)矩陣(包括向量、二維矩陣、多維數(shù)組,下同)的過(guò)程中,下標(biāo)索引要么從0開(kāi)始,要么出現(xiàn)了負(fù)數(shù)。注:matlab的語(yǔ)法規(guī)定矩陣的索引從1開(kāi)始,這與C等編程語(yǔ)言的習(xí)慣不一樣。解決辦法:自己調(diào)試一下程序,把下標(biāo)為0或者負(fù)數(shù)的地方修正。關(guān)于矩陣的各種訪問(wèn)方式。舉例:【錯(cuò)誤代碼】:1.fors=0:0.2:22.??a(s)
2、=4*s-1;3.end復(fù)制代碼【正確代碼】:1.2.fors=1:103.??a(s)=4*s-1;4.end復(fù)制代碼當(dāng)然,這樣的賦值使用循環(huán)是低效的,因此不提倡Undefinedfunctionorvariable"a"中文解釋?zhuān)汉瘮?shù)或變量a沒(méi)有定義出錯(cuò)原因及解決辦法:1.如果a是變量,則參見(jiàn)[原創(chuàng)]寫(xiě)給學(xué)習(xí)matlab的新手們一貼中技巧6后半部分2.如果a是函數(shù),則這是因?yàn)閙atlab在所有已添加的路徑中都無(wú)法找到該函數(shù)對(duì)應(yīng)的m文件而導(dǎo)致的,對(duì)此,把該m文件移動(dòng)到當(dāng)前路徑下再運(yùn)行便可。(注:何謂“所有已
3、添加的路徑”——在命令窗口中輸入pathtool可以查看;何謂“當(dāng)前路徑”——在命令窗口中輸入pwd可以查看)舉例:myPlus.m:1.functiond=myPlus(a,b)2.d=a+b;復(fù)制代碼【錯(cuò)誤調(diào)用】:命令窗口:1.>>z=myPlus(a,b)復(fù)制代碼【正確調(diào)用】:命令窗口:1.>>x=2;2.>>y=5;3.>>z=myPlus(x,y)復(fù)制代碼Inputargument"x"isundefined中文解釋?zhuān)狠斎胱兞縳沒(méi)有定義出錯(cuò)原因及解決方法:參見(jiàn)[原創(chuàng)]寫(xiě)給學(xué)習(xí)matlab的新手們一貼
4、中技巧6舉例:1.functiony=myTest(x)2.y=x*2;復(fù)制代碼【錯(cuò)誤調(diào)用】:直接在m文件編輯窗口運(yùn)行程序,或者命令窗口:1.>>a=myTest;復(fù)制代碼【正確調(diào)用】:1.>>b=4;2.>>a=myText(b);復(fù)制代碼MatrixdimensionsmustagreeInnermatrixdimensionsmustagree中文解釋?zhuān)壕仃嚨木S數(shù)必須一致出錯(cuò)原因:這是由于運(yùn)算符(=+-/*等)兩邊的運(yùn)算對(duì)象維數(shù)不匹配造成的,典型的出錯(cuò)原因是錯(cuò)用了矩陣運(yùn)算符。matlab通過(guò)“.”來(lái)區(qū)分
5、矩陣運(yùn)算和元素運(yùn)算,對(duì)此可以參閱:[原創(chuàng)]寫(xiě)給學(xué)習(xí)matlab的新手們一貼中技巧1解決辦法:自己調(diào)試一下程序,保證運(yùn)算符兩邊的運(yùn)算對(duì)象維數(shù)一致舉例:【錯(cuò)誤代碼】:1.b=[1,2];2.a=[-1,1];3.c=a*b;復(fù)制代碼【正確代碼】:1.2.b=[1,2];3.a=[-1,1];4.c=a.*b;復(fù)制代碼AttempttoexecuteSCRIPTconvasafunction出錯(cuò)原因及解決辦法:參見(jiàn)[原創(chuàng)]寫(xiě)給學(xué)習(xí)matlab的新手們一貼中技巧2如果經(jīng)過(guò)上述檢測(cè)后仍然出現(xiàn)錯(cuò)誤,則請(qǐng)把m文件的路徑設(shè)置
6、為常規(guī)的試試,即不使用中文的路徑、不使用數(shù)字作為m文件名的開(kāi)頭等等Functiondefinitionsarenotpermittedatthepromptorinscripts中文解釋?zhuān)翰荒茉诿畲翱诨蛘吣_本文件中定義函數(shù)出錯(cuò)原因:一旦在命令窗口寫(xiě)functionc=myPlus(a,b),此錯(cuò)誤就會(huì)出現(xiàn),因?yàn)楹瘮?shù)只能定義在m文件中。關(guān)于腳本文件和m文件的區(qū)別請(qǐng)查閱matlab基礎(chǔ)書(shū)。簡(jiǎn)言之:1)如果你寫(xiě)成function的形式,那么必須寫(xiě)在m文件中,且以function開(kāi)頭(即function語(yǔ)句前不能包
7、含其他語(yǔ)句,所有語(yǔ)句必須放在function中,當(dāng)然,function的定義可以有多個(gè),各function之間是并列關(guān)系,不能嵌套);2)如果你寫(xiě)成腳本的形式,則既可以寫(xiě)在命令窗口中,也可以寫(xiě)在m文件中,但兩者均不能包含function語(yǔ)句(即不能進(jìn)行函數(shù)的定義)解決辦法:新建一個(gè)m??文件,然后再進(jìn)行函數(shù)的定義1.Xmusthaveoneortwocolumns2.Vectorsmustbethesamelengths中文解釋?zhuān)?.X必須是1或者2列2.向量長(zhǎng)度必須一致出錯(cuò)原因:1.實(shí)際輸入不滿足該條件。至
8、于如何判斷矩陣的行、列,請(qǐng)參閱高等代數(shù)或者matlab的基礎(chǔ)書(shū)籍2.輸入的兩個(gè)(或幾個(gè))變量長(zhǎng)度不滿足該條件。例如plot函數(shù)的前兩個(gè)輸入變量,如果一個(gè)是1*2,另一個(gè)是1*3,則會(huì)出錯(cuò)解決方法:都需要自己調(diào)試一下1.把X的維數(shù)改為1或者2列2.按照函數(shù)的語(yǔ)法要求把向量的長(zhǎng)度設(shè)置為一樣舉例:【錯(cuò)誤代碼】:1.a=[-1,-2,-3];2.b=[1,2];3.plot(a,b);復(fù)制代碼【正確代碼】: