MATLAB pagemtimes给出错误答案[关闭]

wxclj1h5  于 2023-06-23  发布在  Matlab
关注(0)|答案(1)|浏览(154)

**已关闭。**此问题不符合Stack Overflow guidelines。目前不接受答复。

这个问题似乎不是关于在help center定义的范围内编程。
6天前关闭
这篇文章是编辑并提交审查6天前.
Improve this question
对于这些示例,使用pagemtimes似乎不考虑矩阵乘法

A = rand(10, 10, 3, 3);
B = rand(10, 10, 1, 3);
C = pagemtimes(B, A);
size(C)

C的大小的预期答案是[10,10,1,3]。我得到的答案是[10,10,3,3]。
同样地,

A = rand(10, 10, 3, 3);
B = rand(10, 10, 3, 1);
C = pagemtimes(A, B);
size(C)

C的大小的预期答案是[10,10,3,1]。我得到的答案是[10,10,3,3]。
这个问题是由于对文件的误解而提出的。函数pagemtimes的行为准确。在下面的代码中可以看到一个快速的解释:

A = rand(10, 10, 3, 3);
B = rand(10, 10, 1, 3);
A = permute(A,[3 4 1 2]);
B = permute(B,[3 4 1 2]);
C = pagemtimes(B, A);
size(C)
j8ag8udp

j8ag8udp1#

1.- X和Y应该具有相同的大小


https://uk.mathworks.com/help/matlab/ref/pagemtimes.html?s_tid=srchtitle_pagemtimes_1

报价

  • 如果X和Y有三个以上的维度,则前两个维度之外的所有维度必须具有*兼容尺寸
  • pagemtimes隐式地扩展额外维度,以乘以分页矩阵的所有组合:Z(:,:,i,j,k)= Xx(:,i,j,k)Yy(:,i,j,k)
    报价结束

这并不是说AB必须具有相同的大小,但当AB的大小不相等时,MATLAB将做一些猜测工作,使所有矩阵大小完全相同的值,然后进行逐页矩阵乘法,即矩阵维数>3,则是逐片乘法。

2.-尝试填充零

在允许MATLAB用任何东西来膨胀较小的矩阵之前,为什么不提前在较小的矩阵中填充零,这样两个pagemtimes输入矩阵AB都具有最大矩阵的维度,在这种情况下

10, 10, 3, 3

相关问题