Matlab 计算for循环中的值
我有一个用于存储值的for循环。出于某种原因,它计算的是For循环中所有数字(包括For循环中的数字)的值,而不仅仅是数组中的值Matlab 计算for循环中的值,matlab,loops,for-loop,Matlab,Loops,For Loop,我有一个用于存储值的for循环。出于某种原因,它计算的是For循环中所有数字(包括For循环中的数字)的值,而不仅仅是数组中的值 t = 3600:50:172800;x = 0.1;y = 0; ro = 0.1; T = zeros(1,length(t)); for Cm = 1E6:1E6:4E6 for i = 1:length(t) T = T_ILS(x,y,ro,Cm,t); Tall(Cm,:) = [T]; end end
t = 3600:50:172800;x = 0.1;y = 0; ro = 0.1;
T = zeros(1,length(t));
for Cm = 1E6:1E6:4E6
for i = 1:length(t)
T = T_ILS(x,y,ro,Cm,t);
Tall(Cm,:) = [T];
end
end
我收到的错误是请求200000x3385阵列超过最大阵列大小首选项。我希望for循环只计算Cm值,而不是中间的每个数字。在内部循环中,T是函数T_ILS的输出,每次使用相同的参数
for i = 1:length(t)
T = T_ILS(x,y,ro,Cm,t);
Tall(Cm,:) = [T];
end
我不知道这个函数计算的是什么,但您可能想改为这样做
for i = 1:length(t)
T = T_ILS(x,y,ro,Cm,t(i));
Tall(Cm,:) = [T];
end
为了说明向量t的每个值,或者更好:
for t = 3600:50:172800
T = T_ILS(x,y,ro,Cm,t);
Tall(Cm,:) = [T];
end
编辑:另外,为了使这个答案完整,我想将@MadPhysicast的答案与我的答案合并。结果将是
Cm = 1E6:1E6:4E6; x = 0.1;y = 0; ro = 0.1;
T = zeros(1,length(t));
for i = 1:length(Cm)
for t = 3600:50:172800;
T = T_ILS(x,y,ro,Cm(i),t);
Tall(i,:) = [T];
end
end
你并不是在计算中间的每一个值,但是你的指数是乱七八糟的。Cm以百万为单位获取值,但您可以使用它来索引TallCm:。你可能想要
t = 3600:50:172800;x = 0.1;y = 0; ro = 0.1;
T = zeros(1,length(t));
Cm = 1E6:1E6:4E6;
for j = 1:length(Cm)
for i = 1:length(t)
T(i) = T_ILS(x,y,ro,Cm(j),t(i));
end
Tall(j,:) = [T];
end
请注意,主函数调用分配给Ti,并在函数参数中使用Ti来证明for循环的存在 什么是变量t?添加,删掉一些代码以保持简单。添加的代码行放错了位置。t\u ILS做什么?也许你想用T=T_ILSx,y,ro,Cm,ti;?不同的论点。Cm变化。赋值索引搞乱了。在内部循环中,相同的输出值在Cm实际更改之前被长时间返回。这一点很好。删除了你的否决票。我想你想要Ti=。。。