problem using matrix indexing with bsxfun.
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Tristan
el 31 de Oct. de 2013
Comentada: Tristan
el 31 de Oct. de 2013
I'd like to calculate only A(a)*B(b), while keeping the original format of bsxfun(@times,A,B)
>> A=[-1 2 -3;4 -5 6;-7 8 -9];
B(:,:,1)=[-1 2 -3;4 -5 6;-7 8 -9];
B(:,:,2)=[-1 2 -3;4 -5 6;-7 8 -9];
bsxfun(@times,A,B)
ans(:,:,1) =
1 4 9
16 25 36
49 64 81
ans(:,:,2) =
1 4 9
16 25 36
49 64 81
>> a=A<0;b=B<0;
>> bsxfun(@times,A(a),B(b))
Error using bsxfun
Non-singleton dimensions of the two input arrays
must match each other.
0 comentarios
Respuesta aceptada
Matt J
el 31 de Oct. de 2013
Editada: Matt J
el 31 de Oct. de 2013
I'd like to calculate only A(a)*B(b)
Have you checked what A(a) and B(b) look like? They are both vectors of different sizes so A(a)*B(b) has no clear definition,
>> A(a)
ans =
-1
-7
-5
-3
-9
>> B(b)
ans =
-1
-7
-5
-3
-9
-1
-7
-5
-3
-9
If you want all combinations of products A(a(i))*B(b(j)), you don't need bsxfun at all. It's just an outer product calculation,
A(a)*B(b).'
If this is not what you want, then you need to clarify what the final result should look like.
Más respuestas (0)
Ver también
Categorías
Más información sobre Resizing and Reshaping Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!