0

指定された回数だけコードのセグメントを繰り返すことができる関数はありますか?

例えば:

t= 0; 
while (t< 10) 
  if x==2 
    x=1 
  else 
    x=3; 
  end 
end

別の関数を使用してこの関数を書き直すにはどうすればよいですか?

4

3 に答える 3

4

再帰関数を使用すると、これを行うことができます (for、while、repeat を使用できないと仮定します)。

http://www.matrixlab-examples.com/recursion.html

于 2013-01-06T17:46:40.600 に答える
2

または、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でいくつかあります)。

于 2013-01-06T18:32:20.023 に答える
1

ベクター形式でコードを配置すると、Matlabはコードを自動的に「繰り返し」ます。

x_vector = round(2*rand(10,1)) %Your x input
idx = (x_vector==2)
x_vector(idx) = 1;
x_vector(~idx) = 3;
于 2013-01-07T10:11:06.373 に答える