登录论坛

查看完整版本 : 基于索引初始化MATLAB矩阵


poster
2019-12-10, 20:48
我正在尝试创建一个满足的矩阵M:

M(i,j) = f(i,j) 一些我可以通过说M = zeros(m,n)然后循环来进行元素初始化。例如(在八度中):

M = zeros(m,n) for i = 1 : m for j = 1 : n m(i, j) = (i+j)/2; endfor endfor 但是AFAIK循环并不是使用MATLAB的最佳方法。有什么提示吗?



回答:

当然!

xi = 1:m; xj = 1:n; Ai = repmat(xi',1,length(xj)); Aj = repmat(xj,length(xi),1); M = f(Ai,Aj); 您可以对任何f()执行此操作,只要它接受矩阵参数并进行逐元素数学运算即可。例如: f = @(i,j) (i+j)/2或用于乘法: f = @(i,j) i.*j Ai矩阵的每一行具有相同的元素,Aj矩阵具有相同的元素每列。 repmat()函数 (http://www.mathworks.com/help/techdoc/ref/repmat.html)将矩阵(或向量)重复成更大的矩阵。

我还编辑了上面的内容以抽象出向量xi和xj -您将它们分别设为1:m和1:n向量,但是它们可以是任意数值向量(例如[1 2 7.0 pi 1:0.1:20] )



更多&回答... (https://stackoverflow.com/questions/4006860)