矩阵维度的Matlab错误

时间:2014-05-15 22:32:37

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

我收到错误

  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]的结果矩阵。但即使我使用转置我也会得到同样的错误。即使矩阵尺寸正确,为什么我会收到错误?

1 个答案:

答案 0 :(得分:0)

你需要做我认为被称为"广播"的事情,即确保矩阵上的元素运算是在兼容大小的矩阵上完成的。一种优雅的方法是使用bsxfun:

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

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

希望这有帮助,

TEPP