我正在尝试使用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}获得的值,我需要前一个值。
非常感谢任何帮助!
提前致谢!
答案 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)
你能在循环中做所有的计算,不要用“;”来阻止代替。如果你在循环后得到一个结果,你将只得到最后一个。