【问题标题】:Matlab error for matrix dimensions矩阵尺寸的Matlab错误
【发布时间】:2014-05-15 22:32:37
【问题描述】:

我收到一个错误

  Error using  - 
    Matrix dimensions must agree.

    Error in Untitled6 (line 32)
        temp=double(S_bar) - (repmat(mean_face, 1, num_images));

代码:

for i=1:num_images
    [m,n] = size(S(:,i))
    [a,b] = size(repmat(mean_face, 1, num_images))
    temp=double(S(:,i)) - (repmat(mean_face, 1, num_images));

S(:,i) 的大小是 [45045 1] 和 repmat(mean_face, 1, num_images) 的大小是 [45045 45] 所以我尝试使用 S(:,i) 的转置,使维度变为 [1 45045],这样我就可以获得 [1 45] 的结果矩阵。但即使我使用转置,我也会得到同样的错误。为什么即使矩阵尺寸正确,我也会收到错误消息?

【问题讨论】:

  • 不能减去 45045x1 矩阵减去 45045x45 矩阵。预期的结果是什么?

标签: matlab image-processing matrix dimensions pattern-recognition


【解决方案1】:

您需要做我认为所谓的“广播”,即确保对矩阵的元素操作是在大小兼容的矩阵上完成的。一种优雅的方法是使用 bsxfun :

temp=bsxfun(@minus,double(S(:,i)),(repmat(mean_face, 1, num_images)));

您也可以在您的double(S(:,i)) 上使用repmat,以便它具有正确的列数。

希望这会有所帮助,

特普

【讨论】:

    猜你喜欢
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-20
    • 2013-11-11
    相关资源
    最近更新 更多