Matlab 计算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

我有一个用于存储值的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
我收到的错误是请求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=。。。