如果我知道你在更高层次上想要做什么,我可能会给你更好的建议。当我读到这个问题时,我问自己“他为什么要那样做?”。有可能有更好的方法来做你想做的事情。
话虽如此,我认为您正在尝试做这样的事情。
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
我并不是说这个功能是做你想做的事情的好方法,但我认为它完成了这项工作。如果是这样,请发表评论,然后也许其他人可以绕过并告诉您如何更有效/更安全地进行操作。
我提供的解决方案很容易出现问题。如果你的变量在同一个循环中改变了两次,你想不想看到?如果你更新矩阵的一个元素,你想不想看到?你的变量可以改变循环中的维度或类型吗?如果变量在循环中没有改变值,你可以包含这些值吗?
也许这个解决方案更适合您尝试做的事情:
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