あなたがより高いレベルで何をしようとしているのかを知っていれば、より良いアドバイスができるかもしれません. この質問を読んだとき、私は「なぜ彼はそれをしたいのですか?」と自問します。あなたがやろうとしていることを行うためのはるかに良い方法がある可能性があります。
そうは言っても、あなたはこのようなことをしようとしていると思います。
function [x y] = foo
x = 0;
y = 0;
for i = 1:100
if x(end)<i
x(end+1)=i^2;
end
if y(end)^3<x(end)
y(end+1)=sqrt(x(end));
end
end
>> [x y] = foo
x =
0 1 4 25 676
y =
0 1 2 5 26
この関数があなたがしようとしていることを実行する良い方法だと言っているわけではありませんが、それは仕事を成し遂げると思います. もしそうなら、コメントを残してください.
私が提供した解決策は、問題を起こしやすいものです。変数が同じループで 2 回変更された場合、それを確認しますか? 行列の 1 つの要素を更新した場合、それを確認しますか? ループ内で変数の次元や型を変更できますか? 変数がループ内の値を変更しない場合、とにかくそれらの値を含めることができますか?
おそらく、この解決策は、あなたがやろうとしていることに対してよりうまくいくでしょう:
function [xout yout] = foo
n=100;
x = 0;
y = 0;
xout = repmat(x,n,1);
yout = repmat(y,n,1);
for i = 1:n
if x<i
x=i^2;
end
if y^3<x
y=sqrt(x);
end
xout(i)=x;
yout(i)=y;
end
xout = unique(xout);
yout = unique(yout);
>> [x y] = foo
x =
1
4
25
676
y =
1
2
5
26