我一定錯過了一件非常簡單的事情,因爲這看起來不應該這麼難。爲什麼不能在MATLAB匿名函數中定義一個變量?
此代碼是正確的:
clear all
whatever = @(x) deal(max(x), size(x));
input = randn(1,1000);
[a b] = whatever(input)
不過,我真正想做的事情是這樣的:
clear all
whatever = @(x) deal(q = 3; q*max(x), size(x));
input = randn(1,1000);
[a b] = whatever(input)
爲什麼這會打破?我不能在函數內定義q?我想要使用匿名函數的全部原因是我可以在其中執行多行代碼,然後返回答案。我假設匿名函數的最後一個語句是返回的,但是如何在其中定義變量?我不想在匿名函數的定義之前定義q。
謝謝。
您不能。什麼阻止你做'@(x)交易(3 * max(x),size(x))'? –
@EitanT我可以做到這一點。我問的原因是因爲我想讓q成爲some_very_complicated_function,所以它將成爲一個佔位符,以便代碼在最後可讀。我的印象是,我可以像實際功能一樣編寫匿名函數。它爲人類的可讀性。 – Spacey