Entrada/salida
Cadena de caracteres
Una cadena de caracteres es un vector formado por caracteres entre comillas simples. Los caracteres pueden ser, letras, números, otros símbolos y espacios. Creamos la cadena de caracteres 'Hola que tal' y la asignamos a la variable
>> str='Hola que tal' str =Hola que tal >> str(2) ans =o >> str(6:8) ans =que
Como las cadenas de caracteres son vectores, se pueden unir fácilmente. La misma operación se hace con la función
>> str1='Hola'; >> str2=' que tal'; >> str=[str1,str2] str =Hola que tal >> strcat(str1,str2) ans =Hola que tal
La función
>> eq1='2*pi*t'; >> eq2='pi/2+4*pi*t-(pi/12)*t^2'; >> eq=strcat(eq1,'=',eq2,'+k*2*pi') eq =2*pi*t=pi/2+4*pi*t-(pi/12)*t^2+k*2*pi
La función
>> str=char('Hola que tal', 'gato','23'); >> str(1,:) ans =Hola que tal >> length(str(1,:)) ans = 12 >> str(3,:) ans =23 >> length(str(3,:)) ans = 12
La función
Los valores numéricos se pueden convertir a cadenas de caracteres mediante las funciones
>> tF=50; %grado Fahrenheit >> tC=(tF-32)*5/9; %grado Celsius >> texto=['La temperatura es ',num2str(tC),' C'] texto = La temperatura es 10 C
>> str=int2str(34) str =34 >> str=int2str(35.9) str =36 >> str=int2str(35.2) str =35
>> x=1000*pi; >> num2str(x,1) ans =3e+03 >> num2str(x,3) ans =3.14e+03 >> num2str(x,4) ans =3142 >> num2str(x,5) ans =3141.6 >> num2str(x,8) ans =3141.5927 >> num2str(x) ans =3141.5927 >> x=pi/1000; >> num2str(x,1) ans =0.003 >> num2str(x,3) ans =0.00314 >> num2str(x,4) ans =0.003142 >> num2str(x,5) ans =0.0031416 >> num2str(x,8) ans =0.0031415927 >> num2str(x) ans =0.0031416
En este ejemplo
>> x=linspace(1,5,8) x = 1.0000 1.5714 2.1429 2.7143 3.2857 3.8571 4.4286 5.0000 >> num2str(x,3) ans =1 1.57 2.14 2.71 3.29 3.86 4.43 5
Entrada de datos
Si deseamos resolver otra ecuación de segundo grado, modificamos los valores de las variables
a=1; b=-1; c=-6; dis=sqrt(b^2-4*a*c); x1=(-b+dis)/(2*a) x=(-b-dis)/(2*a)
En MATLAB podemos cambiar el valor de los parámetros de entrada con el editor de script, guardar de nuevo el script modificado y correrlo. Pero es mucho más fácil utilizar el comado
a=input('primer coeficiente, a: '); b=input('segundo coeficiente, b: '); c=input('término independiente, c: '); dis=sqrt(b^2-4*a*c); x1=(-b+dis)/(2*a) x2=(-b-dis)/(2*a)
Corremos el script modificado, nos pide los coeficientes a, b y c de la ecuación de segundo grado ax2+bx+c=0 y calcula las raíces.
primer coeficiente, a: 1 segundo coeficiente, b: -1 término independiente, c: -6 x1 = 3 x2 = -2
Para asignar una cadena de caracteres (string) a una variable
>> str=input('mensaje: '); mensaje: 'hola' >> str=input('mensaje: ','s'); mensaje: hola
En el primer caso, el string deberá estar delimitado por comillas simples, en el segundo caso, pasándole a
Introducimos un vector o una matriz con el comando
>> temp=input('Introduce cuatro temperaturas en grados C: ') Introduce cuatro temperaturas en grados C: [10,22,40,23] temp = 10 22 40 23
El vector deberá estar delimitado [ ...]
Mostrar datos
MATLAB imprime los resultados de los cálculos y los guarda bien en una variable o en
La función disp
La función
>> disp('resultado') resultado >> y=22; >> disp(y) 22 >> x=1:0.5:3; >> disp(x) 1.0000 1.5000 2.0000 2.5000 3.0000 >> A=[1 2 3; 4 5 6; 7 8 9]; >> disp(A) 1 2 3 4 5 6 7 8 9
Mezclamos texto y números
>> x=12.76; >> disp(['La longitud es = ',num2str(x),' m']) La longitud es = 12.76 m >> x=[10.32, 32.12, 5.10]; >> disp(['Las longitudes son = ',num2str(x),' m']) Las longitudes son = 10.32 32.12 5.1 m >> n=length(x); >> disp([repmat('La longitud es = ',n,1),num2str(x'),repmat(' m',n,1)]) La longitud es = 10.32 m La longitud es = 32.12 m La longitud es = 5.1 m
Vamos a ver como imprime una tabla de valores (abscisa, ordenada) de la función, y=3x2-5
x=0:5 %vector fila y=3*x.^2-5 %vector fila res(:,1)=x'; %columna 1 de la matriz res(:,2)=y'; %columna 2 de la martiz %esto es equivalente a poner res=[x' y'] disp('tabla función') disp('abscisa ordenada') disp(res)
En la ventana de comandos corremos el script
x = 0 1 2 3 4 5 y = -5 -2 7 22 43 70 tabla función abscisa ordenada 0 -5 1 -2 2 7 3 22 4 43 5 70
La función fprintf
Otra función para mostrar un mensaje o un resultado, que permite mezclar texto y valores numéricos de las variables y tiene un mejor control sobre el formato de los números. Esta función tiene muchas posibilidades por lo que empezaremos con las más sencillas.
En medio del texto se ha intercalado un valor numérico que contiene una variable con el formato %-5.2f,
- % es el símbolo que indica formato
- -, alinea el número hacia la izquierda
- +, imprime el signo (+ si es positivo y - si es negativo)
- 0, añade ceros
- 5, indica cinco caracteres que es el ancho del campo donde ese imprime el valor numérico, si el número es más corto se añaden espacios o ceros delante del número.
- 2, indica la precisión, indica el número de dicimales que se mostrarán a la derecha del punto decimal
- f, indica que se utilizará la notación (entero.decimal) por ejemplo 17.09
- e, indica que se utilizará la notación exponencial, por ejemplo1.709e+001
- i, indica entero
- g, formato corto
Vamos a calcular el alcance de un proyectil disparado con velocidad de v0=46 m/s haciendo un ángulo de θ=30° mediante la siguiente fórmula.
Creamos un script para probar la función
v0=46; %velocidad de disparo ang=30; %ángulo de tiro x=v0^2*sind(2*ang)/9.8; %alcance fprintf('ángulo de tiro %i°, alcance %5.2f m\n',ang,x)
El carácter
Corremos el script en la ventana de comandos
ángulo de tiro 30°, alcance 186.99 m
En este ejemplo, vemos como controla el formato de los números
>> x=[11, -13, 4078.458, 0.11167]; >> fprintf('%5.2f\n', x) 11.00 -13.00 4078.46 0.11 >> fprintf('x = %2.0f, y = %2.0f, z = %5.3f, w = %5.5f\n', x) x = 11, y = -13, z = 4078.458, w = 0.11167
La función
v0=46; %velocidad de disparo ang=[15:15:75]; %vector ángulos de tiro x=v0^2*sind(2*ang)/9.8; %vector alcances disp('ángulo, alcance (m)') fprintf('%i° %5.2f\n',[ang;x])
ángulo, alcance (m) 15° 107.96 30° 186.99 45° 215.92 60° 186.99 75° 107.96
La función sprintf
La función
%código para dibujar un gráfico plot(Vr,Pr,'r') text(1,1.35,sprintf('presión %1.3f',p))
Vamos a ver como funciona en la ventana de comandos. Guardamos el valor que imprime
>> str=sprintf('el valor de pi es %1.3f',pi) str = el valor de pi es 3.142
Al final de