使用循环迭代值的总和

时间:2018-03-29 12:51:47

标签: arrays matlab for-loop matrix

我有一个行矩阵如下

a=[1 2 3];

for循环已实现如下

 for i=1:a(1,1:size(a,2))
    disp(i);
    disp("Hello");
end

基于行矩阵Hello的值必须打印6次(即1+2+3),但它只打印一次。如何沿行矩阵迭代并打印Hello 6次?

1 个答案:

答案 0 :(得分:4)

a=[1 2 3];
for ii=1:sum(a)
    disp("Hello")
end 

1:a(1,1:size(a,2)) == 1:a(1,[1 2 3]) == 1:a(1,1) == 1:1 == 1实际上创建了一个包含数字1的数组(更具体:a(1),因为1:[1 2 3]将评估为1:1,并进一步放弃所有元素在矢量)。鉴于您提到的数字6,我认为您需要a中由sum给出的所有元素的总和

最后提醒:请不要将ij用作变量名as they also denote the imaginary unit

阅读你的评论你可能需要一个嵌套循环,因为a的条目可能不会单调增加:

k = 1; % counter to show which iteration you're in
for ii = 1:numel(a) % for all elements of a do
    for jj = 1:a(ii) % do the following a(ii) times
        disp('Iteration %d', k)
        disp('Hello')
        k = k+1; % increase iteration count
    end
end

请注意,当a不包含严格非负整数值时,两种方法都会失败(显然)。