MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   基于索引初始化MATLAB矩阵 (https://www.labfans.com/bbs/showthread.php?t=24046)

poster 2019-12-10 20:48

基于索引初始化MATLAB矩阵
 
我正在尝试创建一个满足的矩阵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的最佳方法。有什么提示吗?



[B]回答:[/B]

当然!

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矩阵具有相同的元素每列。 [URL="http://www.mathworks.com/help/techdoc/ref/repmat.html"]repmat()函数[/URL]将矩阵(或向量)重复成更大的矩阵。

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



[url=https://stackoverflow.com/questions/4006860]更多&回答...[/url]


所有时间均为北京时间。现在的时间是 23:30

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.