まず第一に、あなたはif
ライン上true
は必要ありません。 if v>m
と言うときはを意味するので、== true
は必要ありません。
次のようにあなたのコードを絞り込むことができます。
x=rand(113,1);
y=rand(113,1);
x=sort(x, 'descend');
v=[x,y];
N = [];
B = [];
for ii=2:113
if v(ii,2) > max(v(1:ii-1,2))
N = [N v(ii-1,2)];
B = [B v(ii-1,1)];
end
end
をしかし、ベクトルが大きい場合は、二つのベクトルを事前に割り当てる検討すべきである覚えています。 ループの開始前に配列のサイズがわからない場合は、配列を事前に割り当ててから、必要に応じてループの完了後に配列を縮小します。あなたが事前に割り当て、その後、それらを取り除くNaN
を使用することができ、その場合には
:
x=rand(113,1);
y=rand(113,1);
x=sort(x, 'descend');
v=[x,y];
N = nan(size(x));
B = N;
for ii=2:113
if v(ii,2) > max(v(1:ii-1,2))
N(ii,1) = v(ii-1,2);
B(ii,1) = v(ii-1,1);
end
end
N = N(~isnan(N));
B = B(~isnan(B));
出典
2017-05-18 16:25:09
NKN