Matrix dimensions must agree.
Show older comments
where is the error please ???
clear,clc
cp=1005;
r=287;
d=1.2;
v=300;
tx=284;
px=98;
to=298;
py=100:200;
a1=((d*v*r).^2)./(2*cp.*py);
a2=1;
a3=-to;
p=[a1 a2 a3];
ty=roots(p);
ds=(cp.*log(ty./tx))-(r.*log(py./px));
Answers (4)
Sean de Wolski
on 28 Mar 2012
Error using - Matrix dimensions must agree. That is an error with '-' (minus). Going to the only minus:
Compare sizes:
(r.*log(py./px))
and
(cp.*log(ty./tx))
There is your problem.
1 Comment
mohamed saber
on 28 Mar 2012
Walter Roberson
on 28 Mar 2012
0 votes
roots() returns a column vector, but everything else is a row vector.
Your a1 vector is the same length as py, but when you put a2 and a3 on the end of that, your p vector becomes 2 elements longer than py. roots() returns a vector one element shorter than its input vector, so roots() is going to return a vector one element longer than py. You then try to subtract between that vector of length of py + 1 and the vector of length of py.
2 Comments
mohamed saber
on 28 Mar 2012
Walter Roberson
on 28 Mar 2012
Ty=ty(1:end-1) .';
in order to get the row vector you need.
mohamed saber
on 29 Mar 2012
0 votes
Andrei Bobrov
on 29 Mar 2012
cp=1005;
r=287;
d=1.2;
v=300;
tx=284;
px=98;
to=298;
py=(100:200).';
a1=((d*v*r).^2)./(2*cp.*py);
a2=1;
a3=-to;
p=[a1; a2; a3];
ty=roots(p);
Ty=ty(1:end-1);
ds=(cp.*log(Ty./tx))-(r.*log(py./px));
Categories
Find more on Creating and Concatenating Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!