matlab 多维数组 平移,matlab – 三维对象的多维数组:如何向内化产品进行矢量化...

BlockScalar(nv,A)

ans(:,:,1,1)=

1 2

3 4

ans(:,:,2,1)=

0 0

0 0

ans(:,:,3,1)=

0 0

0 0

ans(:,:,1,2)=

0 0

0 0

ans(:,:,2,2)=

1 2

3 4

ans(:,:,3,2)=

0 0

0 0

ans(:,:,1,3)=

0 0

0 0

ans(:,:,2,3)=

0 0

0 0

ans(:,:,3,3)=

1 2

3 4

分块矩阵

第二个函数目前不起作用,因为我正在努力在A的第i个元素(它是一个3×3矩阵)和包含第i个元素的3个元素的列向量之间实现矩阵乘积A * u. ü.正如您可能很容易看到的,我希望这是3-D中矩阵*向量乘积的多维推广.

function [B] = BlockMatrix(A,u)

N = size(u,2);

B = zeros(N,N,3);

for i=1:N

for j=1:N

B(i,j,:)= reshape(reshape(A(i,j,:,:),[3,3])*reshape(u(i,j,:),[1 3]),size(u));

end

end

——- BlockMatrix示例

如果输入是广义单位矩阵(每个NxN元素是3×3单位矩阵),则NxN矩阵由3×1向量组成:

N=2;

A = 4.*shiftdim( repmat( eye(3,3), 1, 1, N, N ), 2 );

c = ones(2,2);

V(1,1,:)=[1 2 3];

u = c.*V;

期望的输出显然是具有V(NxN矩阵由3×1向量构成)的结构的对象,其中每个元素是重塑的矩阵乘积(A(i,j,:,:),[3 3])和重塑(V(i,j,:),[1 3]).那是:

i=1;j=1;

reshape(B(i,j,:),[3,1])

ans =

4

8

12

对于任何我和j.

完整输出,完整性:

B(:,:,1) =

060014

B(:,:,2) =

060015

B(:,:,3) =

060016

问题

我很难(0)让BlockMatrix工作; (1)找到一种正确的矢量化方法,(2)我甚至不确定矢量化版本会更快.

任何帮助回答上述问题都将非常感激.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值