Why does this for loop fail?

3 visualizaciones (últimos 30 días)
cmcelm
cmcelm el 10 de Nov. de 2019
Comentada: cmcelm el 10 de Nov. de 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

Respuesta aceptada

Stephan
Stephan el 10 de Nov. de 2019
Editada: Stephan el 10 de Nov. de 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 comentario
cmcelm
cmcelm el 10 de Nov. de 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.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Productos


Versión

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by