如何嵌套循环使整个循环重复 100 倍
How to Nest a Loop so the Entire Thing Repeats 100X
我有一个循环,我正在尝试创建另一个循环,但我不确定语法应该是什么。这是我的代码:
for (?)
for i=1:6
r(i)=normrnd(0,0.1*sy);
y_new=A+B*x+r;
end
% estimate new A and B
[mm,nn]=size(x); DoF=mm-2;
x_mean=mean(x);
y_mean=mean(y_new);
xp=(x-x_mean);
yp=(y_new-y_mean);
num=sum(xp.*yp);
dem=sum(xp.*xp);
B_new=num/dem;
A_new=y_mean-B_new*x_mean;
end
我不确定要在 for 循环中放入什么才能使其重复 100 倍。我假设我需要“for i=1:100”,但我不确定在循环中的哪个位置设置我的 x(i) 以获得预期的结果。我什至不确定我是否正确地将第一个循环嵌套在那里。我正在尝试使用 normrnd 创建一组 6 个新的 y 值,然后 运行 线性回归以生成新的 A 和 B(斜率和截距),然后我想重复整个过程 100X。
除非您有特殊原因不向量化您的 normrnd()
调用,否则您只需要一层 for
s:
%sy,A,B,x initialized elsewhere
for i=1:100
r=normrnd(0,0.1*sy,[6 1]);
y_new=A+B*x+r;
clear r;
% estimate new A and B
[mm,nn]=size(x);
DoF=mm-2;
x_mean=mean(x);
y_mean=mean(y_new);
xp=(x-x_mean);
yp=(y_new-y_mean);
num=sum(xp.*yp);
dem=sum(xp.*xp);
B_new=num/dem;
A_new=y_mean-B_new*x_mean;
%set B=B_new and A=A_new for the next iteration maybe?
end
clear i;
我有一个循环,我正在尝试创建另一个循环,但我不确定语法应该是什么。这是我的代码:
for (?)
for i=1:6
r(i)=normrnd(0,0.1*sy);
y_new=A+B*x+r;
end
% estimate new A and B
[mm,nn]=size(x); DoF=mm-2;
x_mean=mean(x);
y_mean=mean(y_new);
xp=(x-x_mean);
yp=(y_new-y_mean);
num=sum(xp.*yp);
dem=sum(xp.*xp);
B_new=num/dem;
A_new=y_mean-B_new*x_mean;
end
我不确定要在 for 循环中放入什么才能使其重复 100 倍。我假设我需要“for i=1:100”,但我不确定在循环中的哪个位置设置我的 x(i) 以获得预期的结果。我什至不确定我是否正确地将第一个循环嵌套在那里。我正在尝试使用 normrnd 创建一组 6 个新的 y 值,然后 运行 线性回归以生成新的 A 和 B(斜率和截距),然后我想重复整个过程 100X。
除非您有特殊原因不向量化您的 normrnd()
调用,否则您只需要一层 for
s:
%sy,A,B,x initialized elsewhere
for i=1:100
r=normrnd(0,0.1*sy,[6 1]);
y_new=A+B*x+r;
clear r;
% estimate new A and B
[mm,nn]=size(x);
DoF=mm-2;
x_mean=mean(x);
y_mean=mean(y_new);
xp=(x-x_mean);
yp=(y_new-y_mean);
num=sum(xp.*yp);
dem=sum(xp.*xp);
B_new=num/dem;
A_new=y_mean-B_new*x_mean;
%set B=B_new and A=A_new for the next iteration maybe?
end
clear i;