查看: 336|回复: 1|关注: 0

[已解决] MATLAB for循环逐点运算如何用矩阵运算优化

[复制链接]

新手

7 麦片

财富积分


050


1

主题

1

帖子

0

最佳答案
本帖最后由 Christian9971 于 2020-7-26 23:58 编辑

如代码所示,v是N×M维矩阵,e为1×M维向量,以下用两个for循环实现的逐点运算能否用矩阵运算来代替?

for i = 1:N
    for j = 1:N
        D(i,j) = e*(v(i,:)-v(j,:))';
    end
end

回复主题 已获打赏: 0 积分

举报

论坛优秀回答者

权威

4503 麦片

财富积分



5

主题

4487

帖子

968

最佳答案
  • 关注者: 221
发表于 2020-7-27 17:33:01 | 显示全部楼层 |此回复为最佳答案
本帖最后由 maple1314168 于 2020-7-27 17:37 编辑

N不要太大,可能不够内存。
  1. N=1e3;M=3;
  2. e=rand(1,M);v=rand(N,M);
  3. fun=@(x,y)e*(x-y)';
  4. D=squareform(pdist(v,fun)).*(triu(ones(N))-tril(ones(N)));
复制代码

回复此楼 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表