matlab 三维矩阵向量化,Matlab:向量化三维矩阵的工艺

我实际上向量化了我的一个代码,并且遇到了一些问题。Matlab:向量化三维矩阵的工艺

这是我最初的代码:

CoordVorBd = random(N+1,3)

CoordCP = random(N,3)

v = random(1,3)

for i = 1 : N

for j = 1 : N

ri1j = (-CoordVorBd (i,:) + CoordCP(j,:));

vij(i,j,:) = cross(v,ri1j))/(norm(ri1j)

end

end

我已经开始向量化,创建一个包含3个* 1向量一些矩阵。我的矩阵大小是N * N * 3。

CoordVorBd1(1:N,:) = CoordVorBd(2:N+1,:);

CoordCP_x= CoordCP(:,1);

CoordCP_y= CoordCP(:,2);

CoordCP_z= CoordCP(:,3);

CoordVorBd_x = CoordVorBd([1:N],1);

CoordVorBd_y = CoordVorBd([1:N],2);

CoordVorBd_z = CoordVorBd([1:N],3);

CoordVorBd1_x = CoordVorBd1(:,1);

CoordVorBd1_y = CoordVorBd1(:,2);

CoordVorBd1_z = CoordVorBd1(:,3);

[X,Y] = meshgrid (1:N);

ri1j_x = (-CoordVorBd_x(X) + CoordCP_x(Y));

ri1j_y = (-CoordVorBd_y(X) + CoordCP_y(Y));

ri1j_z = (-CoordVorBd_z(X) + CoordCP_z(Y));

ri1jmat(:,:,1) = ri1j_x(:,:);

ri1jmat(:,:,2) = ri1j_y(:,:);

ri1jmat(:,:,3) = ri1j_z(:,:);

vmat(:,:,1) = ones(N)*v(1);

vmat(:,:,2) = ones(N)*v(2);

vmat(:,:,3) = ones(N)*v(3);

此代码的工作原理,但在变量创建方面很重。我没有实现将矢量化应用于所有矩阵。

ri1jmat(X,Y,1:3) = (-CoordVorBd (X,:) + CoordCP(Y,:));

的一级方程式不工作... 如果有人有一些想法,有一些清洁剂。

在这一点上,我有一个N * N * 3矩阵ri1jmat与我所有的向量。

欲计算N * N矩阵rij1norm即矢量

rij1norm(i,j) = norm(ri1jmat(i,j,1:3))

能够矢量化维吉矩阵的范数。

vij(:,:,1:3) = (cross(vmat(:,:,1:3),ri1jmat(:,:,1:3))/(ri1jmatnorm(:,:));

该跨产品的作品。

我尝试了一些没有实现这个rij1norm矩阵而没有做双重循环的方法。

如果有人有一些技巧,提前致谢。

2017-03-06

P. Fox

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值