我有一个行矩阵如下
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次?
答案 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
给出的所有元素的总和。
最后提醒:请不要将i
和j
用作变量名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
不包含严格非负整数值时,两种方法都会失败(显然)。