What is wrong with: [betta;delta;gamma]=inv([ab ab_cd -cd])*[C-A];
Mostra commenti meno recenti
Hi
[betta;delta;gamma]=inv([ab ab_cd -cd])*[C-A];
betta, delta and gamma should be scalars.
ab, ab_cd, cd, C and A are column vectors with 3 rows (e.g. [1;2;3]).
I want that
betta = leftvektor(1)
delta = leftvektor(2)
gamma = leftvektor(3)
Matlab shows an error but I am not sure why. Does anyone knows why?
Risposta accettata
Più risposte (1)
John D'Errico
il 30 Ott 2018
Modificato: John D'Errico
il 30 Ott 2018
Why? This is because what you want to do is not valid in MATLAB. You can want for anything. If wishes were horses, beggars would ride.
You cannot split a result as a vector into multiple arguments.
Can you solve the problem? Well, yes. Sigh. Write a little helper function that will take a vector, and automatically split it into scalars.
function varargout = split2scalars(Vec)
% splits a vector of length n into n scalars
n = numel(Vec);
varargout = mat2cell(Vec(:),ones(n,1),1);
So ...
[Vx,Vy,Vz] = split2scalars(1:3)
Vx =
1
Vy =
2
Vz =
3
Use it as:
[betta;delta;gamma] = split2scalars(inv([ab ab_cd -cd])*[C-A]);
Categorie
Scopri di più su Robust Control Toolbox in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!