2011-03-09 51 views
2

我想寫一個函數,最好是匿名函數,它過濾一個數組。這是很難用言語來說,但它是這樣的:如何在Matlab中使用匿名函數過濾數組?

f = @(x) { if (x > 1) x+1 }; 
a = [ 1, 2, 3]; 
f(a) % 
==> [ 1 3 4] 

我想關鍵點是:

  • 希望函數收到一些 或字符串
  • 但給出的時數組, 該函數將自身應用於 數組中的每個元素並返回 另一個數組。

這是類似的方式,功能日誌()的工作原理:

>> log(1) 
ans = 
     0 
>> log([1,2,3]) 
ans = 
     0 0.6931 1.0986 

謝謝

+0

@ Martin08:什麼樣的字符串輸入你期望函數接收? –

+0

@ b3:字符串將位於單元格數組{'str1','str2'}中。謝謝 – Martin08

+0

@ Martin08:當輸入是'{'str1','str2'}'時,函數的輸出應該是什麼? –

回答

6

你可能只是這樣做:

f = @(x) x + (x > 1);