matlab中的for或while循环

matlab中的for或while循环,matlab,loops,for-loop,while-loop,Matlab,Loops,For Loop,While Loop,我刚开始在编程课上使用matlab中的for循环,基本的东西对我来说很好,但是我被要求“使用循环创建一个3 x 5的矩阵,其中每个元素的值是它的行号与其列号的幂除以它的行号与列号之和,例如元素的值(2,3)是(2^3/2+3)=1.6 那么,我需要使用什么样的循环来启动新行以形成矩阵呢?因为您需要知道行和列的编号(并且仅因为您必须使用循环),for循环是一种自然选择。这是因为,如果设置正确,for循环将自动跟踪您的行和列编号。更具体地说,您需要嵌套的for循环,即一个for循环在另一个for循环

我刚开始在编程课上使用matlab中的for循环,基本的东西对我来说很好,但是我被要求“使用循环创建一个3 x 5的矩阵,其中每个元素的值是它的行号与其列号的幂除以它的行号与列号之和,例如元素的值(2,3)是
(2^3/2+3)
=1.6


那么,我需要使用什么样的循环来启动新行以形成矩阵呢?

因为您需要知道行和列的编号(并且仅因为您必须使用循环),for循环是一种自然选择。这是因为,如果设置正确,for循环将自动跟踪您的行和列编号。更具体地说,您需要嵌套的for循环,即一个for循环在另一个for循环中。例如,外部循环可能循环行,内部循环可能循环列

至于在矩阵中开始新行,在循环中这样做是非常糟糕的做法。您更应该预分配矩阵。这将对代码的性能产生重大影响。预分配通常使用
zero
函数完成

e、 g

但最有效的方法可能是根本不使用循环,而是使用
ndgrid
一次性完成:

[R, C] =  ndgrid(1:num_rows, 1:num_cols);
M = (R.^C)./(R+C);

命令
bsxfun
对于此类问题非常有用。它将为您完成所有循环和预分配

例如:


任何一个都可以。但是,for循环将是整洁的。您可以使用循环索引来索引矩阵元素。
[R, C] =  ndgrid(1:num_rows, 1:num_cols);
M = (R.^C)./(R+C);
bsxfun(@(x,y) x.^y./(x+y), (1:3)', 1:5)