
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
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


0