Matlab - Variables single sin parte imaginaria

 
Vista:
sin imagen de perfil

Variables single sin parte imaginaria

Publicado por Juan José (60 intervenciones) el 07/05/2014 12:57:23
Hola,

Estoy escribiendo un código, que funciona bien pero quiero eliminarme problemas con los números imaginarios.
Necesito que la variable sea single, y sólo tengo parte real (no imaginaria)

Escribo el código y señalo el problema:

clear;
clc;
close all;

% PARÁMETROS GEOMÉTRICOS Y OPERACIONALES

% 1. Lectura de datos
clear;
clc;
close all;
L=input('Introduce la longitud del kiln\n L(mm):');
D=input('Introduce el diámetro del kiln\n D(mm):');
while (L/D)>7 || (L/D)<5
L=input('Introduce otra longitud del kiln\n L(mm):');
D=input('Introduce otro diámetro para el kiln\n D(mm):');
end
R=D/2;
hR=input('Introduce el grado de llenado. Rango valores [0,1]\n hR:'); % Grado de llenado h/R
while hR>0.5 %(Modelo válido para valores bajos de llenado de sólidos)
hR=input('Introduce un valor menor o igual a 0.5\n hR:');
end
h0=hR*R; %Altura inicial de lecho de sólidos (mm)
hex=(10/100)*h0; % Altura final considerando un 10% de la altura inicial (mm)
% x0. Longitud media de la superficie de la capa activa
x01=Lmedia(R,h0);
x02=Lmedia(R,hex);
xvector=[x01 x02];
x0=mean(xvector); % Valor de la longitud media (mm)
n=input('Introduce la velocidad de rotación del kiln\n n(rpm):');
alpha=input('Introduce el ángulo de inclinación del kiln\n \alpha(º):');
beta=(h0-hex)/L; % Ángulos en grados. Pasar a rad para cálculos
Theta=input('Introduce el ángulo dinámico de reposo del material\n Theta(º):');
alpharad=toRadians('degrees',alpha);
betarad=toRadians('degrees',beta);
Thetarad=toRadians('degrees',Theta);
a=input('Introduce un factor de segregación mayor a cero\n a:');

% 2. Número de trazadores
NUM=input('Introduce el número de trazadores\n NUM:');

% POSICIÓN Y TIEMPO INICIAL DE LA PARTÍCULA
t=real(zeros(1,NUM,'single'));
for i=1:NUM
% Tiempo inicial de la partícula (min)
t(i)=0;
% Posición inicial de la partícula
y=R-h0; % Coordenada y
z=0; % Coordenada z
rinf=-1;
rsup=1; % Rango para valores aleatorios
xini=x0*uniformrn(rinf,rsup);

La primera parte es sólo introdución de datos. Posteriormente, NUM para indicar número de iteraciones.
En la sección posición inicial y tiempo inicial emmpieza el problema.

Para evitar el error "t cambia con cada bucle....." he indicado el tamaño que tendrá t (1,NUM).
Cuando ejecuto el código los valores de t son:

t=[0.025 +0.000i, 0.037+0.000i,.....]

¿Alguien puede ayudarme en cómo eliminar esa parte imaginaria??

Gracias y un saludo
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 JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Variables single sin parte imaginaria

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 11/05/2014 14:17:29
Estimado usuario
Con que valores lo ejecutas tu código.


Saludos.
JOSE JEREMÍAS CABALLERO
Asesoría online y Presencial en Matlab
programador en matlab
Servicios de programación matlab
[email protected]

Estimado usuario de Matlab, el correo es para servicios de programación, toda ayuda gratuita es vía foro.


http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
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

Variables single sin parte imaginaria

Publicado por Juan José (60 intervenciones) el 12/05/2014 13:08:19
Gracias por la respuesta Jose,

Continué trabajando con el código sin importarme la parte imaginaria, y luego pase a quedarme con la parte real de la variable.

ti=real(t);

Gracias y un saludo
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