matlab - matlab 中的 for 或 while 循环

标签 matlab loops for-loop while-loop

我刚刚开始在编程课的 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/

相关文章:

excel - 将矩阵定义从 Excel 导入 MATLAB

Matlab - 读取具有不同行长的文件

python - 如何将循环应用于 python 中的多线程

javascript - 我正在尝试从父容器中获取所有按钮 id,并且总是获取最后一个

解析矩阵的嵌套 for 循环的时间复杂度

matlab - 在 MATLAB GUI 弹出菜单中写入指数

matlab - 如何找到向量中 n 个最小元素的索引

c - 从 C 中的 For 循环返回值

javascript - 从同步循环内调用异步函数并保持结果有序

javascript - 使用 jQuery 连续移动元素