2012-02-25 64 views
0

我有這個問題,當我在主屏幕上運行下面的代碼寫入matlab does not不給我一個問題。Matlab編輯器問題,一個錯誤?

但是,如果我把它寫在編輯器中,那麼它會抱怨它是無效的語法。 你能告訴我我做錯了什麼,或者它是一個錯誤?

Ques1 = { @(data) mean(data) @(data) std(data) }; 
mean = Ques1 {1} (data(:,1)) # runs perfectly on the main compiler screen 

在我的編輯頁面上,編譯器抱怨=號中缺少可能的括號。不過,我不明白爲什麼它可以通過線路編譯器在matlab上運行!

+0

編輯器是否會在'mean = Ques1 {1}(data(:,1))'行上給出黃色或紅色警報? – macduff 2012-02-25 23:43:44

+0

它給了我一個紅色警報 – anon 2012-02-26 16:45:14

+0

第二行的數據變量是什麼? – macduff 2012-02-27 15:07:02

回答

3

這兩行代碼是絕對正確的。在你的代碼中,你忘記了一個左開放的支架,例如[{(

+1

+1嘗試在編輯器中按Ctrl-A Ctrl-I以基於語法使其重新生成;這可以幫助您找到不匹配的括號。 – 2012-02-27 16:04:33

0

我目前無法訪問Matlab,因此我無法測試這一點,但是您的語法對我來說看起來並不合適。試試這個:

Ques1 = {@(data)mean, @(data)std}; 
mean = Ques1{1}(data(:,1)) 

如果你在你的調試器中以你的方式運行它,它說你的單元陣列有多少個元素?

2

編輯現在我明白g24l在說什麼!是的,這可能是你的問題的罪魁禍首。

不知道你使用的是什麼版本的MATLAB的,但是當我運行一個非常簡單的腳本:?

data = kron(1:25,transpose(1:25)); % very simple 2D matrix of data; 

Ques1 = { @(data) mean(data) @(data) std(data) }; 
mean1 = Ques1 {1} (data(:,1)) % runs perfectly on the main compiler screen 

它完美的R2007B和R2009b中,您使用的舊的或更新的版本,我懷疑有一些其他的問題,在你的腳本攀升此外,如下的問題Mathworks推薦編程程序,我會鼓勵年齡爲而不是將變量或函數命名爲與另一個變量或函數相同的名稱。在這種情況下,我指的是mean = ...。很容易把這些東西混淆起來,然後產生討厭的問題。如果您需要更多幫助,請隨時發佈更多腳本。希望這可以幫助!