DOUBLE cannot convert the input expression into a double array
Mostrar comentarios más antiguos
This is the code. Could anyone run it and give me some suggestion about the error 'DOUBLE cannot convert the input expression into a double array' ? Cheers!
if true % DD =
1.2000 0.6000 1.6000 0.5000 1.3000 1.4000 100.0000
1.2000 0.6000 1.6000 0.5000 1.3000 1.6000 100.0000
1.2000 0.6000 1.6000 0.5000 1.3000 1.8000 100.0000
1.2000 0.8000 1.6000 0.7000 1.2000 1.4000 100.0000
1.2000 0.6000 1.4000 0.7000 1.2000 1.4000 100.0000
1.3000 0.6000 1.6000 0.7000 1.3000 1.4000 100.0000
1.3000 0.6000 1.6000 0.7000 1.3000 1.4000 100.0000
1.4000 0.4000 1.6000 0.6000 1.5000 1.4000 100.0000
1.4000 1.6000 0.4000 0.8000 1.1000 1.2000 100.0000
1.4000 1.8000 0.4000 0.8000 1.1000 1.2000 100.0000
1.4000 2.0000 0.4000 0.8000 1.1000 1.2000 100.0000
1.2000 2.2000 0.3000 0.8000 1.1000 1.2000 100.0000
1.5000 1.6000 0.4000 0.6000 1.1000 1.3000 100.0000
1.5000 1.3000 0.4000 0.6000 1.5000 1.3000 100.0000
1.2000 2.0000 0.7000 0.8000 1.1000 1.2000 100.0000
1.1000 2.0000 0.7000 0.8000 1.1000 1.2000 100.0000
0.5000 1.3000 1.5000 1.4000 0.6000 0.8000 100.0000
0.4000 1.5000 1.5000 1.4000 0.6000 0.8000 100.0000
1.1000 0.5000 1.5000 0.4000 1.2000 1.5000 100.0000
1.1000 0.5000 1.5000 0.4000 1.2000 1.7000 100.0000
1.1000 0.5000 1.5000 0.6000 1.1000 1.3000 100.0000
1.3000 0.3000 1.5000 0.5000 1.4000 1.3000 100.0000
1.1000 0.5000 1.6000 0.4000 1.2000 1.5000 100.0000
1.1000 0.5000 1.7000 0.4000 1.2000 1.5000 100.0000
1.1000 0.6000 1.5000 0.4000 1.2000 1.5000 100.0000
1.3000 0.5000 1.5000 0.4000 1.2000 1.5000 100.0000
1.1000 0.5000 1.6000 0.4000 1.2000 1.5000 100.0000
1.1000 0.8000 1.6000 0.7000 1.2000 1.5000 100.0000
1.1000 0.5000 1.5000 0.4000 1.4000 1.7000 100.0000
1.1000 0.6000 1.5000 0.4000 1.2000 1.7000 100.0000
1.1000 0.5000 1.5000 0.4000 1.2000 1.7000 100.0000
1.1000 0.5000 1.5000 0.4000 1.2000 1.7000 100.0000
1.1000 0.5000 1.5000 0.8000 1.2000 1.7000 100.0000
1.1000 0.5000 1.5000 0.4000 1.2000 1.7000 100.0000
1.1000 0.9000 1.5000 0.4000 1.2000 1.7000 100.0000
1.8000 0.5000 1.5000 0.4000 1.2000 1.7000 100.0000
0.9000 0.5000 1.5000 0.8000 1.2000 1.3000 100.0000
1.1000 0.6000 1.5000 0.8000 1.2000 1.7000 100.0000
0.8000 0.5000 1.8000 0.8000 1.2000 1.7000 100.0000
rn=size(DD,1);
sub=[0.25,0.25,0.25,0.08]
p1=sub(1);
p2=sub(2);
p3=sub(3);
r=sub(4);
eutotal=zeros(rn,5);
eu=zeros(1,rn);
for i=1:rn;
d1=DD(i,1:3)-1;
d2=DD(i,4:6)-1;
edw=DD(i,7);
syms x;
%f=@(x)
f=p1*(d1(1,1)-d2(1,1))*exp(-r*x*(d1(1,1)-d2(1,1)))...
+p2*(d1(1,2)-d2(1,2))*exp(-r*x*(d1(1,2)-d2(1,2)))...
+p3*(d1(1,3)-d2(1,3))*exp(-r*x*(d1(1,3)-d2(1,3)));
y=solve(f,x)
isempty(y);
if isempty(y)
PF(1,1)=10;
else
PF=double(y);
end
end
end
2 comentarios
Walter Roberson
el 4 de Mzo. de 2013
After the solve(), please show use "y", and show class() and size() of all the names that are mentioned in y (that is, the ones that would be affected by the subs())
xueqi
el 4 de Mzo. de 2013
Respuesta aceptada
Más respuestas (1)
Azzi Abdelmalek
el 3 de Mzo. de 2013
Editada: Azzi Abdelmalek
el 3 de Mzo. de 2013
Try
subs(y)
Example
y=solve('x+1');
whos y
r=subs(y)
whos r
Also
if isempty(y)==1 is the same as if isempty(y)
15 comentarios
xueqi
el 3 de Mzo. de 2013
Azzi Abdelmalek
el 3 de Mzo. de 2013
Ok, the error concerns
s(end) = [];
which is not posted
xueqi
el 3 de Mzo. de 2013
Azzi Abdelmalek
el 3 de Mzo. de 2013
Editada: Azzi Abdelmalek
el 3 de Mzo. de 2013
No
whos y
% will show you if y is sym or double
Post the error message and the corresponding code
Azzi Abdelmalek
el 3 de Mzo. de 2013
Can you post just the lines that are causing errors?
xueqi
el 3 de Mzo. de 2013
Editada: Azzi Abdelmalek
el 3 de Mzo. de 2013
Azzi Abdelmalek
el 3 de Mzo. de 2013
Ok, What is wrong with this line?
xueqi
el 4 de Mzo. de 2013
Editada: Azzi Abdelmalek
el 4 de Mzo. de 2013
xueqi
el 4 de Mzo. de 2013
Azzi Abdelmalek
el 4 de Mzo. de 2013
syms z1 k i
y=125*log(z1) + 250*pi*k*i
%to convert this to double you should affect values to your sym variables
z1=1
k=1
i=1
result=subs(y)
xueqi
el 4 de Mzo. de 2013
Walter Roberson
el 4 de Mzo. de 2013
xueqi, what are
class(z1)
class(k)
size(z1)
size(k)
and experiment with
subs(y, z1, 1)
subs(y, k, 0)
to see if those give errors or reasonable-looking values
Walter Roberson
el 4 de Mzo. de 2013
Could you show the value of "f" before the solve ?
xueqi
el 4 de Mzo. de 2013
Categorías
Más información sobre Conversion en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!