计算for循环中的值

时间:2017-02-12 01:01:22

标签: matlab loops for-loop

我有一个存储值的for循环。出于某种原因,它正在计算所有数字的值,包括for循环中的数字,而不仅仅是数组中的数值。

$(".typeahead").tagsinput({
       typeaheadjs: {
           source: engine.ttAdapter()
       }
    });

我得到的错误是“请求2000000x3385数组超出最大数组大小首选项”。我希望for循环只计算Cm值而不是每个数字。

2 个答案:

答案 0 :(得分:1)

在内部循环中,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

编辑:另外,为了完成这个答案,我想将@ MadPhysicist的答案合并到我的答案中。结果将是

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

答案 1 :(得分:1)

你不是在计算它们之间的每个值,但你的指数搞砸了。 var获取数百万的值,但您可以使用它来索引Cm。你可能想要

Tall(Cm,:)

请注意,main函数调用分配给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 并在函数参数中使用T(i)来证明t(i)循环的存在。