【问题标题】:How to perform operations on matrices of non-matching size如何对大小不匹配的矩阵执行操作
【发布时间】:2017-04-04 16:11:21
【问题描述】:
A = rand(4,2);
B = rand(4,3)

现在在对B(根、导数等)执行一些操作后,我们得到一个新矩阵B1,其维度为size(B1) = size(B)

我要执行的操作

B.' * ( A - B1.')

就像B.' 的每个元素与A 相乘一样,同时,在乘法之前,从A 中减去元素B1 中的对应元素。

最终的尺寸必须是我们通常会从 B.' * A 的乘法中得到的尺寸

注意 - 初始化矩阵的维度在每次运行时都会发生变化,因此无需手动操作

示例

假设我们有

A = 2x2 
     [ x1, x2 ]
     [ y1, y2 ]

B = 2X1
     [a1]
     [b1]

B1 = 2x1
     [a11]
     [b11]

所以在B.' * A的简单乘法中

 [(a1 * x1 + b1 * y1), (a1 * x2 + b1 * y2)]

我想减去B1 这样

 [ (a1 * (x1-a11) + b1 * (y1-b11)),  (a1 * (x2-a11) + b1 * (y2-b11))]

不同大小的输入示例:

输入

   B = 
    [ a1 b1; 

      a2 b2;  

      a3 b3;

      a4 b4]

  A = 

  [ x11 x12 x13; 

    x21 x22 x23;

    x31 x32 x33; 

    x41 x42 x43]

  B1 =

  [a10 b10;

   a20 b20;

   a30 b30;

   a40 b40]


Result =

 [b1(x11-b10)+b2(x21-b20)+b3(x31-b30)+b4(x41-b40) b1(x12-b10)+b2(x22-b20)+b3(x32-b30)+b4(x42-b40) b1(x13-b10)+b2(x23-b20)+b3(x33-b30)+b4(x43-b40);


 a1(x11-a10)+a2(x21-a20)+a3(x31-b30)+a4(x41-a40) a1(x12-a10)+a2(x22-a20)+a3(x32-a30)+a4(x42-a40) a1(x13-a10)+a2(x23-a20)+a3(x33-a30)+a4(x43-a40)]

【问题讨论】:

  • 您打算如何从 4 x 2 矩阵中减去 4 x 3?
  • 请提供输入和输出的数字示例。
  • @Suever 检查更新的描述!
  • @Dev-iL 示例已添加!
  • 请学习format your question 粗体格式很少需要并且使帖子难以阅读。此外,还有一种叫做“代码格式化”的东西,请实际将其用于代码,不要将所有内容都加粗或引用黄色或任何其他类型的痛苦的眼睛格式化迪斯科。

标签: matlab matrix octave


【解决方案1】:

我假设size(B,2) >= size(A,2)

A = rand(4,2);
B = rand(4,3);
B1 = rand(size(B)).*B;
res = B' * ( A - B1(:,1:size(A,2))) 

【讨论】:

  • 请查看描述中的示例,我想从A的每个元素中减去B1的每个元素
猜你喜欢
  • 1970-01-01
  • 2015-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-01
  • 2016-11-30
  • 2023-03-17
  • 1970-01-01
相关资源
最近更新 更多