14

以下をワンライナーで書いてもいいですか?

x = [1,3,5,7,9]
res = zeros(1,size(x,2));
for i=1:size(x,2);
    res(i) = foo(x(i));
end;

foo 関数が期待どおりに配列を処理しないと仮定します。私の場合、引数として配列を指定した場合でも、foo はスカラーを返します。

たとえば、Python では、次のようになります。

x = [1,3,5,7,9]
res = [foo(y) for y in x]
4

2 に答える 2

14

arrayfun必要なものです。例えば:

res = arrayfun(@foo, x)

fooは常にスカラーを返すため、上記は機能し、とres同じ次元のベクトルにもなりますxfooが可変長出力を返す場合は、 への呼び出しでまたはに設定'UniformOutput'する必要があります。出力は配列になります。false0arrayfuncell

于 2012-06-06T16:41:27.247 に答える