我收到错误
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]的结果矩阵。但即使我使用转置我也会得到同样的错误。即使矩阵尺寸正确,为什么我会收到错误?
答案 0 :(得分:0)
你需要做我认为被称为"广播"的事情,即确保矩阵上的元素运算是在兼容大小的矩阵上完成的。一种优雅的方法是使用bsxfun:
temp=bsxfun(@minus,double(S(:,i)),(repmat(mean_face, 1, num_images)));
您还可以在repmat
上使用double(S(:,i))
,以便它具有正确的列数。
希望这有帮助,
TEPP