MATLAB Answers

Why does this for loop fail?

2 views (last 30 days)
cmcelm on 10 Nov 2019
Commented: 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;


Sign in to comment.

Accepted Answer

Stephan on 10 Nov 2019
Edited: Stephan on 10 Nov 2019
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.

More Answers (0)

Sign in to answer this question.