2017-04-04 5 views
0

J'ai deux matrices à soustraire. Voyons le code ci-dessous.Erreur bsxfun lors de l'exécution '@minus'

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

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

je reçois l'erreur en disant que

dimensions non-singleton des deux tableaux d'entrée doivent correspondre à l'autre

Toute idée pourquoi cette erreur? Merci!

Répondre

4

vous essayez d'appliquer bsxfun sur deux vecteurs de colonne, alors que vous devez l'appliquer sur une ligne et un vecteur de colonne.

bsxfun les entrées doivent avoir différentes dimensions singelton (size(arr,dim) == 1). dans votre exemple size(A) = [5472,1] et size(B) = [1,3] qui est l'entrée appropriée (la dimension de singelton de A est 2 et la dimension de singelton de B est 1), mais quand vous faites B(:) - la dimension de singelton devient A, comme A, qui jette un Erreur.

faire:

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

C= bsxfun(@minus, A, B) 
+0

peut pas croire que je fais cette erreur! Je vous remercie! –