Matlab - Grafica en 3D

 
Vista:
sin imagen de perfil
Val: 352
Ha disminuido 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

Grafica en 3D

Publicado por Ricardo (218 intervenciones) el 28/03/2017 22:09:29
tengo un código que me proyecta una radiación correcta
pero que al multiplicar este código por otro el matlab me muestra
:

Error using surface
X, Y, Z, and C cannot be complex
Error in nuevo (line 26)
S=surface(X,Y,Z,(abs(E)))


El codigo de la radiación es la siguiente y si lo muestra correctamente:
E=(sin(TETA).*cos(cos(TETA))./(sin(TETA)^2))

y al multiplicar por F es decir por:
F=I1*exp(((x1)*sin(TETA).*cos(PHI)))*i
me mustra el error

Al preparar el angulo de elevacion y el azimut tengo

phi=(0:.01:1)*2*pi;%fi
teta=(0:.01:1)*pi;%theta
[PHI,TETA]=meshgrid(phi,teta);

y para graficar::

%cambio de coordenadas esfericas a rectangulares para poder graficar
X=PR.*sin(TETA).*cos(PHI);
Y=PR.*sin(TETA).*sin(PHI);
Z=PR.*cos(TETA);
% grafica en 3d
S=surface(X,Y,Z,(abs(E)))

El matlab me muestra:

Error using surface
X, Y, Z, and C cannot be complex
Error in nuevo (line 26)
S=surface(X,Y,Z,(abs(E)))


Me podrian decir en donde tengo el error?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JESUS DAVID ARIZA ROYETH
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Grafica en 3D

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 28/03/2017 22:21:08
te está diciendo que tienes números complejos , yo en esta línea
1
F=I1*exp(((x1)*sin(TETA).*cos(PHI)))*i
veo un imaginario, el último i y pues al multiplicar por F estás haciendo valores imaginarios en C, si deseas es extraer la parte real deberías hacer real(E)

espero te sea de ayuda
https://www.facebook.com/royethmatlab/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Grafica en 3D

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 28/03/2017 22:32:48
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
clear all
close all
TETA=pi/4;
x1=rand;
I1=rand;
PHI=pi;
%El codigo de la radiación es la siguiente y si lo muestra correctamente:
E=(sin(TETA).*cos(cos(TETA))./(sin(TETA)^2));
 
%y al multiplicar por F es decir por:
F=I1*exp(((x1)*sin(TETA).*cos(PHI)))*i;
%me mustra el error
 
%Al preparar el angulo de elevacion y el azimut tengo
 
phi=(0:.01:1)*2*pi;%fi 
teta=(0:.01:1)*pi;%theta
[PHI,TETA]=meshgrid(phi,teta);
 
%y para graficar::
PR=rand(size(TETA));
%cambio de coordenadas esfericas a rectangulares para poder graficar 
X=PR.*sin(TETA).*cos(PHI);
Y=PR.*sin(TETA).*sin(PHI);
Z=PR.*cos(TETA);
% grafica en 3d 
surface(X,Y,Z.*abs(E))
grid on
view(8,18)

1
>> radiacion
Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab


http://matlabcaballero.blogspot.com
https://www.facebook.com/matlabcaballero/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 352
Ha disminuido 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

Grafica en 3D

Publicado por Ricardo (218 intervenciones) el 29/03/2017 06:16:20
Muchas gracias, lo voy a intentar como me indica. Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 352
Ha disminuido 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

Grafica en 3D

Publicado por Ricardo (218 intervenciones) el 29/03/2017 08:23:14
Gracias por su ayuda.
Otra pregunta:
El código que me recomendó>>>>>> PR=rand(size(TETA))
¿Que es lo que hace?
El programa completo ya no me marca error y quedo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
clc;  clear;  close all
 
TETA=pi/4;
PHI=pi;
phi=(0:.01:1)*2*pi;%fi 
teta=(0:.01:1)*pi;%theta
[PHI,TETA]=meshgrid(phi,teta);
 
N=10;
I1=0.0116-0.0044i;  x1=0;
I2=0.0040+0.0010i;  x2=0.5;
I3=-0.0011+0.0002i; x3=1;
I4=0.0005-0.0002i;  x4=1.5;
I5=-0.0003+0.0001i; x5=2;
I6=0.0003-0.0001i;  x6=2.5;
I7=-0.0002+0.0001i; x7=3;
I8=0.0002-0.0001i;  x8=3.5;
I9=-0.0002+0.0000i; x9=4;
I10=0.0002-0.0000i; x10=4.5;
F=I1*exp(((x1)*sin(TETA).*cos(PHI)))*i+I2*exp(((x2)*sin(TETA).*cos(PHI)))*i+I3*exp(((x3)*sin(TETA).*cos(PHI)))*i+I4*exp(((x4)*sin(TETA).*cos(PHI)))*i+I5*exp(((x5)*sin(TETA).*cos(PHI)))*i+I6*exp(((x6)*sin(TETA).*cos(PHI)))*i+I7*exp(((x7)*sin(TETA).*cos(PHI)))*i+I8*exp(((x8)*sin(TETA).*cos(PHI)))*i+I9*exp(((x9)*sin(TETA).*cos(PHI)))*i+I10*exp(((x10)*sin(TETA).*cos(PHI)))*i;
%creacion del campo E en el espacio 
E=(sin(TETA).*cos(cos(TETA))./(sin(TETA)^2));
PR=F.*E;
%y para graficar::
PR=rand(size(TETA));
%cambio de coordenadas esfericas a rectangulares para poder graficar 
X=PR.*sin(TETA).*cos(PHI);
Y=PR.*sin(TETA).*sin(PHI);
Z=PR.*cos(TETA);
% grafica en 3d 
surface(X,Y,Z.*abs(PR))
grid on
view(8,18)
 
xlabel('X')
ylabel('Y')
zlabel('Z')


GRACIAS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar