输出迭代结果来自Matlab中的循环

时间:2013-08-14 19:01:11

标签: matlab for-loop iteration

我正在尝试使用for循环在单元格数组中进行一些计算,但最后只显示最后一个循环的结果。我希望Matlab显示所有循环的结果。这里有代码:

slope=[];
time=[];
position= [];


for p=1:max(L)  % max L gives the number of result{n}. so if max(L)=6 we have from result{1} to result{6} and therefore 6 final values that i want to get%
   a=result{n}(:,1);
   b=result{n}(:,2);
end


B = [ones(length(a),1) a] \ b  % this is to obtain the slope and intercept of a lin. regresion

slope = B(2)

time = result{n}(end,1)-result{n}(1:1)
position = (slope.*result{n}(end,1)+intercept)-(slope.*result{n}(1:1)+intercept)

在输出中我得到的那一刻:

斜率=

4.4089

时间=

0.5794

position =

2.5546

这个结果是正确的。但是,这些值是使用结果{6}获得的值,我需要前一个值。

非常感谢任何帮助!

提前致谢!

3 个答案:

答案 0 :(得分:1)

你搞乱了索引......你有点难以理解你在代码上做了什么,但它可能是这样的(伪代码,因为你提供的代码没有声明result ):

slope=zeros(1,max(L)); % Pre allocate zeros, one index for each interation
time=zeros(1,max(L));
position=zeros(1,max(L));
a=zeros(1,max(L));
b=zeros(1,max(L));

for p=1:max(L)  % max L gives the number of result{n}. so if max(L)=6 we have from result{1} to result{6} and therefore 6 final values that i want to get%
   a(p)=result{p}(:,1);
   b(p)=result{p}(:,2);
   B = [ones(length(a( p ),1) a( p )] \ b( p)  % this is to obtain the slope and intercept of a lin. regresion
   slope( p) = B(2)
   time( p) = result{p}(end,1)-result{p}(1:1)
   position( p) = (slope( p ).*result{p}(end,1)+intercept)-(slope ( p) .*result{p}(1)+intercept)
end

位置(6)将获得您的值,位置(5)为前一个值。

答案 1 :(得分:1)

最简单的方法是删除“;”对于要打印到命令窗口的行。这将显示您需要的所有循环值。

for p=1:max(L)
 a=result{n}(:,1)
 b=result{n}(:,2)
end

答案 2 :(得分:0)

你能在循环中做所有的计算,不要用“;”来阻止代替。如果你在循环后得到一个结果,你将只得到最后一个。