Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我正在尝试创建一个满足的矩阵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()函数将矩阵(或向量)重复成更大的矩阵。 我还编辑了上面的内容以抽象出向量xi和xj -您将它们分别设为1:m和1:n向量,但是它们可以是任意数值向量(例如[1 2 7.0 pi 1:0.1:20] ) 更多&回答... |
![]() |
![]() |