ошибка bsxfun при выполнении '@minus'

У меня есть две матрицы, которые нужно вычесть. Давайте посмотрим код ниже.

A=rand(5472,1);
B=rand(1,3);

C= bsxfun(@minus, A, B(:))

Я получаю сообщение об ошибке

Неодноэлементные размеры двух входных массивов должны совпадать друг с другом.

Любая идея, почему эта ошибка? Спасибо!


person Gregor Isack    schedule 04.04.2017    source источник


Ответы (1)


вы пытаетесь применить bsxfun к двум векторам-столбцам, в то время как вы должны применить его к одной строке и одному вектору-столбцу.

bsxfun входные данные должны иметь разные одноэлементные размеры (size(arr,dim) == 1). в вашем примере size(A) = [5472,1] и size(B) = [1,3], что является подходящим вводом (размер синглтона A равен 2, а размер синглтона B равен 1), но когда вы делаете B(:) - размер синглтона B становится равным 2, как A, что вызывает ошибку.

do:

A=rand(5472,1);
B=rand(1,3);

C= bsxfun(@minus, A, B)
person user2999345    schedule 04.04.2017
comment
Не могу поверить, что я делаю такую ​​ошибку! Спасибо! - person Gregor Isack; 04.04.2017