![]() |
基于索引初始化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.