我刚刚开始在编程课的 matlab 中使用 for 循环,基本的东西对我来说很好,但是我被要求“使用循环创建一个 3 x 5 矩阵,其中每个元素的值是行号除以列号次方除以行号和列号之和,例如元素 (2,3) 的值为 (2^3/2+3)
= 1.6
那么我需要使用什么样的循环才能开始新行以形成矩阵?
最佳答案
由于您需要知道行号和列号(并且只是因为您必须使用循环),因此 for 循环是一个自然的选择。这是因为如果您设置正确,for 循环将自动为您跟踪行号和列号。更具体地说,您需要一个嵌套的 for 循环,即一个 for 循环嵌套在另一个 for 循环中。例如,外循环可能遍历行,内循环可能遍历列。
至于在矩阵中开始新行,这是在循环中执行的非常糟糕的做法。你应该预先分配你的矩阵。这将对您的代码产生重大性能影响。预分配最常使用 zeros
函数完成。
例如
num_rows = 3;
num_cols = 5;
M = zeros(num_rows,num_cols); %// Preallocation of memory so you don't grow your matrix in your loop
for row = 1:num_rows
for col = 1:num_cols
M(row,col) = (row^col)/(row+col);
end
end
但最有效的方法可能是根本不使用循环,而是使用 ndgrid 一次性完成:
[R, C] = ndgrid(1:num_rows, 1:num_cols);
M = (R.^C)./(R+C);
关于matlab - matlab 中的 for 或 while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22909282/