【问题标题】:Reshape matrix for correct minus operation of matrices with different dimension重塑矩阵以对具有不同维度的矩阵进行正确的减法运算
【发布时间】:2017-03-08 02:51:07
【问题描述】:

我想用B=[1x2] 的矩阵减去A=[60x60] 的矩阵。如何塑造第二个矩阵以使减法运算正确?

减法运算可以定义为: A(k1,k2)-[a*k1 b*k2] 在哪里[a*k1 b*k2]=B。为了更清楚,A 是图像的相位矩阵,但是它在每个k1k2 方向上移动了相位B,因此newA 将是图像的新相位,在下面的等式中描述:

其中/theta''A 的新阶段。 a'b' 是矩阵B

我试过这样:

A=rand(60);
B=rand(1,2);
newA=A(:)-B;

但我不确定它是否正确。它会将A 中的所有矩阵移动B 吗?还是只是移动A 的第一行? B 中的k1k2 的值呢?感谢任何帮助!提前致谢!

【问题讨论】:

  • 我不确定我是否理解您尝试执行的减法运算。您想从A 的所有值中减去B?或者仅从A 的两个值中减去B
  • 嗨,我想从A的所有值中减去B
  • 只需使用repmat(B,[240,160])B 转换为240x320 矩阵,然后从A 中减去它。
  • 如果你给出一个 4*4 矩阵的例子可能会更好。有点混乱
  • 您的符号令人困惑。 ab 是如何成为矩阵 B 的?请提供一个小数值示例以附上您的问题。

标签: matlab reshape


【解决方案1】:

据我了解,您将从奇数列中减去 k1,从偶数列中减去 k2。

A2 = zeros(size(A));
A2(:, 1:2:end) = A(:,1:2:end)-k1; 
A2(:, 2:2:end) = A(:,2:2:end)-k2;

【讨论】:

  • 比上面建议的使用repmat 更好的解决方案。
  • @rayryeng,为什么好多了?我认为他们是一个平等的建议。我并不认为这种技术很棒,但至少这是 OP 应该学习/了解的另一种技术
  • 我不确定我是否清楚地解释了自己,但我已尽力而为。我编辑了问题,添加了公式以使其易于理解。我还是想不通!谢谢你们!
  • @smttsp 使用repmat 需要创建一个临时复制矩阵。您没有这样做并就地进行减法。
  • @rayryeng:感谢您的反馈,但我有点困惑。我创建A2 matrix 并从A 减去k1 k2 而在repmat 解决方案中,Aziz 减去临时矩阵并将其设置为A_new,这与我所做的几乎相同的操作。甚至他创建了一个临时矩阵,但我没有。 (在这个维度上,它不会改变任何东西)
最近更新 更多