Matrix dimensions must agree.
6 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
This function make a coordinates from sensor in another coordintes and scale from mm to m. but it gives me the following error message (Matrix dimensions must agree.) at line: Bix = Bix .* sign(MP).* 1000;
% code
MP = [P0(:,3), P0(:,4), P0(:,5)] ./ 1000;
Bix = [(interp3 (xs, ys, zs, Bxs, abs(MP(:,1)), abs(MP(:,2)), abs(MP(:,3))));...
(interp3 (xs, ys, zs, Bys, abs(MP(:,1)), abs(MP(:,2)), abs(MP(:,3))));...
(interp3 (xs, ys, zs, Bzs, abs(MP(:,1)), abs(MP(:,2)), abs(MP(:,3))))];
Bix = Bix .* sign(MP).* 1000;
Bix = Bix .* [1, -1, -1];
5 commentaires
José-Luis
le 2 Août 2017
Modifié(e) : José-Luis
le 2 Août 2017
You're not getting my point, I think.
Arrays no longer need to have the same number of elements for such arithmetic operations to produce results.
Unsolicited disclaimer: I am having a hard time liking that. I'll eventually get on with the times.
Réponses (1)
Jan
le 2 Août 2017
Use the debugger to identify the problem. Set a breakpoint in the failing line:
Bix = Bix .* sign(MP).* 1000;
Then run the code again until it stops. Not check the dimensions:
size(Bix)
size(MP)
For a proper elementwise multiplication, the dimensions must match. Do they?
Note that Matlab >= 2016b can auto-expand dimensions. With older versions, bsxfun helps. Perhaps you want:
Bix = bsxfun(@times, Bix, sign(MP)) * 1000;
Maybe a reshape helps here to adjust the dimensions as wanted.
0 commentaires
Voir également
Catégories
En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!