指定された回数だけコードのセグメントを繰り返すことができる関数はありますか?
例えば:
t= 0;
while (t< 10)
if x==2
x=1
else
x=3;
end
end
別の関数を使用してこの関数を書き直すにはどうすればよいですか?
指定された回数だけコードのセグメントを繰り返すことができる関数はありますか?
例えば:
t= 0;
while (t< 10)
if x==2
x=1
else
x=3;
end
end
別の関数を使用してこの関数を書き直すにはどうすればよいですか?
再帰関数を使用すると、これを行うことができます (for、while、repeat を使用できないと仮定します)。
または、1 つの反復で実行されるコードが他の反復の結果に依存arrayfun
しない場合は、またはを使用できますcellfun
。
例えば
fun = @(x) disp(['hello ' , num2str(x)]);
arrayfun(fun,1:5);
戻り値
hello 1
hello 2
hello 3
hello 4
hello 5
個人的には、C++と同じように非常に表現力があるので、これらの構成体が好きです。std::for_each
それにもかかわらず、それらはMatlabによってJITされた単純なループの対応物よりも遅いことが証明されています(この問題に関するQ/AがSOでいくつかあります)。
ベクター形式でコードを配置すると、Matlabはコードを自動的に「繰り返し」ます。
x_vector = round(2*rand(10,1)) %Your x input
idx = (x_vector==2)
x_vector(idx) = 1;
x_vector(~idx) = 3;