Why does this for loop fail?

4 ビュー (過去 30 日間)
cmcelm
cmcelm 2019 年 11 月 10 日
コメント済み: cmcelm 2019 年 11 月 10 日
I'm trying to create a for loop that will assign a solved element of a function to a blank vector for every value of a given vector. However, when I try to run this code it gives "Error: Assignment has more non-singleton rhs dimensions than non-singleton subscripts" and stops on about the 44th value or so. I made the two vectors the same dimensions, so why am I getting dimensional errors?
syms T V
Ttp = 89.4
% function from earlier
PRfxn = matlabFunction(PREos)
% will use later
dPdV = diff(PREos, V)
dPdT = diff(PREos, T)
CpMinusCv = (-T*(dPdT)^2)/dPdV
CpCvfxn = matlabFunction(CpMinusCv)
% trying to get my T and V for a given P == Pc (variable defined earlier) variable Tc is also defined earlier
Trange = [Ttp:10:2.5*Tc]
Vrange = zeros(1, length(Trange))
i = 1;
for T = Trange
Vrange(1, i) = vpasolve(PRfxn(Trange(1, i), V) == Pc, V, [0 inf])
i = i+1;
end

採用された回答

Stephan
Stephan 2019 年 11 月 10 日
編集済み: Stephan 2019 年 11 月 10 日
vpasolve may find more than one solution. Try to save your results in a cell array:
...
Vrange = cell(1, length(Trange))
...
Vrange{i} = vpasolve(PRfxn(Trange(1, i), V) == Pc, V, [0 inf])
  1 件のコメント
cmcelm
cmcelm 2019 年 11 月 10 日
Thanks! I tested vpasolve and found that it was returning two roots. I'll fix the dimensions on my vpasolve because I only need one root.

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

製品


リリース

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by