Matrix dimensions must agree.

1 回表示 (過去 30 日間)
mohamed saber
mohamed saber 2012 年 3 月 28 日
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));

回答 (4 件)

Sean de Wolski
Sean de Wolski 2012 年 3 月 28 日
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 件のコメント
mohamed saber
mohamed saber 2012 年 3 月 28 日
what should i do ???

サインインしてコメントする。


Walter Roberson
Walter Roberson 2012 年 3 月 28 日
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 件のコメント
mohamed saber
mohamed saber 2012 年 3 月 28 日
what about that ??
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);
Ty=ty(1:end-1);
ds=(cp.*log(Ty./tx))-(r.*log(py./px));
Walter Roberson
Walter Roberson 2012 年 3 月 28 日
Ty=ty(1:end-1) .';
in order to get the row vector you need.

サインインしてコメントする。


mohamed saber
mohamed saber 2012 年 3 月 29 日
could you please write the syntax ???

Andrei Bobrov
Andrei Bobrov 2012 年 3 月 29 日
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));

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by