MATLAB Answers

cmcelm
0

Why does this for loop fail?

Asked by cmcelm
on 10 Nov 2019
Latest activity Commented on by cmcelm
on 10 Nov 2019
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

  0 Comments

Sign in to comment.

Products


Release

R2017b

1 Answer

Stephan
Answer by Stephan
on 10 Nov 2019
Edited by Stephan
on 10 Nov 2019
 Accepted Answer

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 Comment

cmcelm
on 10 Nov 2019
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.

Sign in to comment.