当然。让我们分别浏览每一行代码。请记住,我之所以回答主要是因为 for 循环使用 matrix 而不是向量,而且没有多少人知道它实际上做了什么。
A = zeros(1,3); %pre-allocate space
这会创建一个包含三个元素的空向量,并将其存储在A。
k = 1; %count loop iterations
这个我稍后会解释。
valueMatrix = [1 2 3; 5 6 7];
声明一个大小为 2 x 3 的矩阵,如下所示:
1 2 3
5 6 7
for jj = valueMatrix
这是一个for 循环。我假设你知道那是什么。 for 循环允许您在for 语法中执行一段代码给定的次数。您指定一个向量或矩阵,循环会一次又一次地执行for 构造中的这段代码......每次执行时,它都会从向量或矩阵中提取每个值并将其存储到循环计数器变量中.在这种情况下,该变量是jj。例如,如果我们这样做:
for jj = 1 : 8
disp(jj);
end
这个循环将从jj = 1 开始,我们将在控制台中显示它。接下来,我们转到jj = 2,并在控制台中显示它,我们将继续运行直到jj = 8,然后我们停止。现在有了一个矩阵,这就有点不同了。它的工作原理是,在每次迭代中,我们一次拉出一个列。例如,如果我们这样做:
for jj = [1 2 3; 4 5 6; 7 8 9]
disp(jj);
end
我们会展示:
1
4
7
...在第一次迭代时,然后:
2
5
8
...最后在最后一次迭代:
3
6
9
因此,如果我们这样做了:
for jj = valueMatrix
...这意味着我们将运行这个循环三次次。在第一次迭代中,jj 将是:
1
5
下一次迭代:
2
6
最后一次迭代:
3
7
重要的是,在每次迭代中,jj 是一个 2 元素向量。
fprintf('iteration %d:\n', k)
fprintf 代表格式化打印到文件。但是,它被调用的方式打印到屏幕而不是文本文件。这对您来说可能看起来不熟悉,因为这与您在 C 中调用 printf 的方式基本相同。此函数的第一个参数是您要在屏幕上显示的字符串。您还可以通过在字符串中放置正确的说明符来显示变量的内容。您使用所谓的格式化字符串。在这种情况下,%d 指定要打印的整数,\n 表示移动到下一行。每个格式化字符串都伴随着您要打印的变量。在我们的例子中,%d 与变量 k 配对,因此您希望在每次迭代时打印出变量 k。每次迭代都会像这样:
iteration 1:
iteration 2:
iteration 3:
A(k) = jj(1) + jj(2);
您会注意到k 从 1 开始,每次循环迭代时递增 1(两行之后的 k = k + 1 语句)。因此,在每次迭代中,我们在A 中的每个条目中添加jj 中的两个元素。
jj, A %display variables on terminal
不言自明。我们将这些变量显示在屏幕上,在 iteration 打印语句的顶部......恕我直言有点混乱。
k = k + 1;
已经谈过了。每次迭代的增量。
end
结束循环。
因此,存储在A 中的三元素向量的预期结果发生了变化,其中每个元素从valueMatrix 的列中求和。因此,对于A,您应该得到:
A = [6 8 10];