0% encontró este documento útil (0 votos)
21 vistas81 páginas

Programacion Avanzada Matlab

El documento proporciona una introducción a la programación en MATLAB, cubriendo sentencias condicionales, bucles, y funciones para la lectura y escritura de variables. Se explican conceptos como 'if', 'switch', 'for', y 'while', así como ejemplos prácticos de su uso. Además, se abordan otros tipos de datos y la creación de programas ejecutables en MATLAB.

Cargado por

Mai López
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
21 vistas81 páginas

Programacion Avanzada Matlab

El documento proporciona una introducción a la programación en MATLAB, cubriendo sentencias condicionales, bucles, y funciones para la lectura y escritura de variables. Se explican conceptos como 'if', 'switch', 'for', y 'while', así como ejemplos prácticos de su uso. Además, se abordan otros tipos de datos y la creación de programas ejecutables en MATLAB.

Cargado por

Mai López
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Programación

con
MATLAB

Julio Bodega
Contenidos

1. Sentencias condicionales y bucles

2. Lectura y escritura interactiva de variables

3. Otros tipos de datos

4. Ficheros *.m

5. Entrada y salida de datos

6. Lectura y escritura de ficheros


1. Sentencias condicionales y bucles

• Sentencia if

• Sentencia switch

• Bucle for

• Bucle while

• Sentencia break

• Sentencia try … catch … end


1. Sentencias condicionales y bucles

MATLAB cuando es utilizado como lenguaje de programación no ofrece las posibilidades de


otros lenguajes como es el caso de C, Fortran, etc. Sin embargo, trabajar con MATLAB es
mucho más cómodo que trabajar con dichos lenguajes.

Una sentencia condicional o bifurcación ofrece al programa continuar por diferentes


caminos dependiendo de si se cumple o no una o varias condiciones concretas.

Un bucle es una estructura de programa que permite repetir de forma controlada


determinadas operaciones sobre datos diferentes.

Mientras que la gran mayoría de los lenguajes de programación utilizan las llaves, {...}, para
indicar donde comienza y acaba el bucle, en MATLAB se utiliza la sentencia end para este
propósito.
• Sentencia if 1. Sentencias condicionales y bucles

La forma más simple de escribir en MATLAB la sentencia if es:

If condición
bloque de sentencias
end

En la sintaxis anterior hay que darse cuenta de end cierra el bloque de sentencias que se
desea que ejecute MATLAB con la condición indicada, por ello es conveniente situar end justo
en línea con la sentencia if.

Gran número de veces se omite else ya que de no cumplirse la condición señalada en if el


programa salta el bloque de sentencias.

La forma de escribir una bifurcación múltiple en MATLAB es utilizando la sentencia elseif:

If condición 1
Opción por defecto para
bloque 1
cuando no se cumplan las elseif condicion 2
condiciones 1, 2 y 3 bloque 2
elseif condición 3
bloque 3
puede ser omitida else
bloque 4
end
• Sentencia if 1. Sentencias condicionales y bucles

Ejemplo: Introducir un valor a un escalar P y si el escalar es par y múltiplo de 4 una varible,


también escalar, llamada R, tome el valor de 1, y en caso contrario de 0. (la variable P se
inicializará con el valor 100 y 81 y la variable R con 1000).

>> P=100; >> P=81;


>> R=1000; >> R=1000;
>> if rem(P,2)~=0 >> if rem(P,2)~=0
R=0; R=0;
elseif rem(P,4)==0 elseif rem(P,4)==0
R=1; R=1;
end end
>> R >> R

R= R=

1 0

La resolución del ejemplo anterior no es la más idónea, sencillamente se ha optado por esa
solución para dar una primera visión de la sentencia if.
• Sentencia switch 1. Sentencias condicionales y bucles

La sentencia switch realiza la función análoga a un conjunto de sentencias if … elseif


concatenados. Su sintaxis es la siguiente:

switch switch_expresión
case case_expresión 1,
bloque 1
case case_expresión 2,
bloque 2
….
otherwise %opción por defecto
bloque n
end

La sentencia switch realiza la función análoga a un conjunto de sentencias if … elseif


concatenados. Su sintaxis es la siguiente:

La sentencia comienza leyendo la switch_expresión de donde se obtendrá un escalar o una


cadena de caracteres. Seguidamente se ejecutará el bloque de comandos del case en el
coincidan sus escalares o cadenas de caracteres con las de la switch_expresión. En el caso
de no coincidir ninguna se ejecutarán los comandos de la opción por defecto otherwise.
• Sentencia switch 1. Sentencias condicionales y bucles

Ejemplo de utilización de switch:

>> a=1; >> a=2; >> a=5;


>> switch a >> switch a >> switch a
case 1, case 1, case 1,
R=0; R=0; R=0;
case 2, case 2, case 2,
R=1; R=1; R=1;
otherwise otherwise otherwise
R=1000; R=1000; R=1000;
end end end
>> R >> R >> R

R= R= R=

0 1 1000
• Bucle for 1. Sentencias condicionales y bucles

El bucle for permite repetir de forma controlada un conjunto de sentencias o comandos de


MATLAB.
El bucle for de MATLAB es diferente del utilizado en lenguaje C, su sintaxis es la siguiente:

for i=1:step:n
bloque de sentencias
end

La variable i representa desde que valor parte el inicio del bucle; step es el paso con el que se
incrementa o decrementa la variable i; y n es el valor final que alcanza la variable i, llegados a
ese valor, el bucle finaliza.

Los bucles for pueden anidarse al igual que en otros lenguajes de programación, así podría
escribirse:

for i=1:step:n
sentencias
for j=1:step:m
sentencias
end
end

Si no se especifica el paso MATLAB asigna a step el valor 1.


• Bucle for 1. Sentencias condicionales y bucles

Ejemplo: Introducir en el vector V los números pares del 1 al 50

>> j=0;
>> for i=1:50
if rem(i,2)==0
j=j+1;
V(j)=i;
end
end
>> V

V=

2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40
42 44 46 48 50

En el ejemplo anterior se ha introducido una sentencia condicional if dentro del bucle for.
• Bucle for 1. Sentencias condicionales y bucles

Ejemplo: Mediante un bucle for anidado crear una matriz de 5x5 cuyos elementos sean los 25
primeros números enteros.

>> k=1; % inicializamos k con el valor 1


>> for i=1:5 % desde 1 a 5 filas
for j=1:5 % desde 1 a 5 columnas
A(i,j)=k; % se asigna a cada elemento de la matriz un valor k
k=k+1; % incrementa k
end % cierra el bucle anidado
end % cierra el primer bucle
>> A

A=

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
• Bucle while 1. Sentencias condicionales y bucles

El bucle while permite repetir un conjunto de sentencias o comandos de MATLAB siempre que
se cumpla una determinada condición. Es similar al bucle utilizado en lenguaje C, su sintaxis
es la siguiente:
while condición
bloque de sentencias
end

En la expresion anterior, la condición puede ser una expresión escalar, vectorial o matricial. El
bucle se repetirá hasta que la condición entregue un 0 lógico (false).

Ejemplo: Realizar la suma de los 10 primeros números enteros.

>> P=1; % inicializa variable donde se almacena el producto


>> k=1; % inicializa variable k
>> while k<=10 % siempre que k sea menor o igual a 10 …
P=P*k; % multiplica término a término
k=k+1; % incrementa en 1 el valor de K
end % cierra el bucle
>> P

P=

3628800
• Sentencias break y try … catch … end 1. Sentencias condicionales y bucles

Del mismo modo que en lenguaje C, la sentencia break obliga a finalizar la ejecución del
bucle más interno de los que comprenden a dicha sentencia. Su sintaxis es muy sencila:

break

La sentencia try … catch … end permite gestionar errores que se produzcan en tiempo de
ejecución de un programa. Su sintaxis es la siguiente:

try
bloque de sentencias 1
catch
bloque de sentencias 2
end

Según la sintaxis anterior, si el programa encuentra un error en el bloque de sentencias 1, la


ejecución del programa se transfiere el bloque de sentencias 2. Si el programa funciona
correctamente, el bloque de sentencias 2 no se ejecuta nunca.

Por otro lado, MATLAB dispone de una función llamada lasterr que devuelve una cadena de
caracteres con el mensaje de error que se ha producido.
2. Lectura y escritura interactiva de variables

• Función input

• Función disp
• Función input 2. Lectura y escritura interactiva de variables

La función input se utiliza para imprimir un mensaje en la línea de comandos (>>) de MATLAB
y recuperar como valor de retorno un valor numérico o el resultado de una expresión tecleada
por el usurario. Su sintaxis es la siguiente:

>> n=input(‘frase');
Al igual que en programación con lenguaje C, al ejecutar input el programa queda en espera
hasta introducir un valor.

Anticipándonos a lo que se verá más tarde, input también puede utilizarse en variables de
cadena de caracteres de la siguiente forma:

>> vble. de cadena=input(‘frase‘, ‘s’);

Ejemplo: Introducir dos números mediante teclado a y b y posteriormente obtener su suma.

>> a=input('introduce a: ');


introduce a: 3
>> b=input('introduce b: ');
introduce b: 6
>> a+b

ans =

9
• Función disp 2. Lectura y escritura interactiva de variables

La función disp se utiliza para imprimir en pantalla textos o valores sin tener que imprimir el
nombre de las variables que los contienen. Su sintaxis, dependiendo de lo que se desee
imprimir será:

>> disp (‘texto a imprimir en pantalla’)

cuando es un texto, y:

>> disp (A)

cuando es una matriz A.

Ejemplo: Imprimir en la pantalla un texto y también los elementos de un vector dado.

>> disp('FELICIDADES')
FELICIDADES
>> A=[1 3 5];
>> disp(A)
1 3 5
NUESTRO PRIMER PROGRAMA

Con los comandos estudiados hasta ahora en estos dos cursos de


MATLAB ya estamos en condiciones de crear nuestro primer programa:
se tratará de un programa que solicite la entrada de dos números y
entregue el valor de su suma.

Adicionalmente, crearemos con el programa una aplicación ejecutable


([Link]) desde cualquier máquina compatible-IBM (aplicación stand-
alone).

Los pasos a seguir serán los siguientes:


1º CREAMOS UN FICHERO file scritp: suma.m
NUESTRO PRIMER PROGRAMA

2º INTRODUCIMOS EN suma.m LAS SIGUIENTES SENTENCIAS:

3º CERRAMOS EL FICHERO suma.m Y LO EJECUTAMOS DESDE


MATLAB:
>> suma
introduce un número: 2
introduce otro número: 3
la suma de los números introducidos es:
5
NUESTRO PRIMER PROGRAMA

4º AHORA SE INTENTARÁ COMPILAR EL FICHERO suma.m PARA


HACERLO EJECUTABLE DESDE CUALQUIER MÁQUINA
COMPATIBLE-IBM (aplicación stand-alone).
Lo primero que hay que hacer es buscar si existe algún compilador
MATLAB a lenguaje C instalado en el ordenador. Para ello introduciremos
en la línea de comandos de MATLAB:

Con esta línea de comando se


busca algún compilador mcc
instalado en el ordenador.
Cuando MATLAB lo encuentra
solicita si se desea cargar o
no
NUESTRO PRIMER PROGRAMA

5º AHORA HAY QUE COMPLAR EL FICHERO suma.m A UNO


EJECUTABLE [Link].

Para ello hay que introducir en la línea de comandos de MATALAB:

>> mmc –m suma

¡¡ aparece el fichero stand-alone


[Link] !!
NUESTRO PRIMER PROGRAMA

5º Ya se puede ejecutar [Link] desde la línea de comandos de


MS-DOS:
3. Otros tipos de datos

• Cadenas de caracteres

• Hipermatrices

• Estructuras

• Vectores o matrices de celdas


• Cadenas de caracteres 3. Otro tipo de datos

Del mismo modo que el lenguaje C, MATLAB trabaja con cadenas de caracteres.

Los caracteres de una cadena se almacenan en un vector en el que cada elemento está
asociado a un carácter.

Cada carácter de la cadena ocupa dos bytes.

En MATLAB la cadena de caracteres ha de ir acompañada de comillas simples (‘cadena‘).

Una matriz de caracteres es una matriz cuyos elementos son caracteres, o cuyas filas son
cadenas de caracteres. Todas las filas han de tener el mismo número de elementos por lo que,
si fuese necesario, habría que rellenar alguna fila con espacios en blanco.

MATLAB proporciona un gran número de funciones para trabajar con caracteres. Estas
funciones se encuentran en el subdirectorio: \toolbox\matlab\strfunc dentro de matlab.

A continuación vamos a ir analizando alguna de las funciones de caracteres más ulilizadas.


• Cadenas de caracteres 3. Otro tipo de datos

• Asignar una cadena de caracteres a una variable c:

>> c='bienvenido al MATLAB';


>> c

c=

bienvenido al MATLAB

• Convertir una cadena en un vector de números ASCII asociados a sus caracteres:

>> double(c)

ans =

98 105 101 110 118 101 110 105 100 111 32


97 108 32 77 65 84 76 65 66

• Convertir un vector en una cadena de caracteres:

>> v=[63 67 100];


>> char(v)

ans =

?Cd
• Cadenas de caracteres 3. Otro tipo de datos

• Crear una matriz de caracteres completando con espacios en blanco las cadenas más cortas:

>> cad1='hola';
>> cad2='¿qué tal estás?';
>> char(cad1, cad2)

ans =

hola
¿qué tal estás?
Si la línea char(cad1, cad2) se asocia a una matriz B, el elemento B(2, 4) sería: é.

• Eliminar los espacios en blanco de una cadena de caracteres:


>> c=' adios ';
>> d=deblank(c);
>> length(c)

ans =

11
elimina los últimos espacios
>> length(d) blancos de la cadena

ans =

8
• Cadenas de caracteres 3. Otro tipo de datos

• Detectar si una variable es de cadena de caracteres:

>> c='hola'; >> c=123;


>> d=ischar(c) >> d=ischar(c)

d= d=

1 0

• Detectar si un carácter es una letra del alfabeto:

>> u='hola & mi querido % amigo';


>> isletter(u) Cuando se introduce una
cadena devuelve un vector
ans = de unos y ceros

1 1 1 1 0 0 0 1 1 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1
• Cadenas de caracteres 3. Otro tipo de datos

• Detectar si un carácter es un espacio en blanco:

>> c='hola, soy de aquí';


>> isspace(c)

ans =

0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0

Ejemplo: elaborar un pequeño programa que cuente el número de espacios en blanco de una
frase cualquiera.

>> frase=input('introduce una frase: ', 's');


introduce una frase: hola, soy Pedro;
>> espaciosBlanco=isspace(frase);
>> sum(espaciosBlanco)

ans =

2
• Cadenas de caracteres 3. Otro tipo de datos

• Comparar si dos cadenas son iguales o no:

>> cad1='Manuel'; >> cad2='Pedro';


>> cad2='Pedro'; >> cad3='Pedro';
>> strcmp(cad1, cad2) >> strcmp(cad2, cad3)

ans = ans =

0 1

• Comparar dos cadenas considerando por igual a minúsculas y mayúsculas:

>> cad4='PEDRO'; >> cad2='Pedro';


>> cad2='Pedro'; >> cad4='PEDRO';
>> strcmp(cad2, cad4) >> strcmpi(cad2, cad4)

ans = ans =

0 1
• Cadenas de caracteres 3. Otro tipo de datos

• Comparar los n primeros caracteres de dos cadenas dadas:

>> cad2='Pedro'; >> cad2='Pedro';


>> cad3='Peculiar'; >> cad3='Peculiar';
>> strncmp(cad2, cad3, 2) >> strncmp(cad2, cad3, 3)

ans = ans =

1 0

n primeros caracteres a
comparar

• Comparar las cadenas carácter a carácter devolviendo un vector de unos y ceros:

>> cad2='Pedro';
>> cad3='PeDRo';
>> cad2==cad3
las dos cadenas a comparar han
de tener el mismo número de
ans = caracteres

1 1 0 0 1
• Cadenas de caracteres 3. Otro tipo de datos

• Concatenar cadenas añadiendo la segunda a la primera:

>> s='me apetece'; >> s='me apetece';


>> t=' salir'; >> u=[s, ' salir']
>> u=[s, t]
u=
u=
me apetece salir
me apetece salir

• Sustituir una cadena por otra en una dada:

>> cad1='el travajo que estoy realizando es algo pesado';


>> cad2='travajo';
>> cad3='trabajo';
>> strrep(cad1, cad2, cad3) ¡¡ es muy útil para corregir
errores !!
ans =

el trabajo que estoy realizando es algo pesado


• Cadenas de caracteres 3. Otro tipo de datos

• Separar palabras de una cadena de caracteres (cad), devolviendo la primera palabra (p) y el
resto de la cadena (r):
>> cad='ahora salgo del trabajo';
>> [p, r]=strtok(cad)

p=

Ahora

r=

salgo del trabajo

• Convertir un número entero en una cadena de caracteres:


>> v=2367;
>> int2str(v) ¡¡ no es un número, es una
cadena!!
ans =

2367

>> ans+3 PRUEBA QUE ES UNA CADENA:


ha sumado 3 al codigo ASCII de
ans = los caracteres de la cadena

53 54 57 58
• Cadenas de caracteres 3. Otro tipo de datos

• Convertir un número real x en una cadena de caracteres con un número dado de decimales n:

>> x=12.4589; ¡¡ genera una cadena de cinco


>> num2str(x, 5) elementos sin incluir la coma!!

ans =

12.459 ¡¡ no es un número, es una


cadena!!

>> ans+300

ans = PRUEBA QUE ES UNA CADENA:


ha sumado 300 al codigo ASCII de
349 350 346 352 353 357 los caracteres de la cadena

• Convertir una cadena de caracteres (s) en un número real (x):

>> s='234.5';
>> x=str2double(s);
>> x+0.5

ans =
¡¡ FUNCIÓN MUY IMPORTANTE !!
235
• Hipermatrices 3. Otro tipo de datos

• Denominaremos hipermatrices a un tipo de matrices (conjunto de elementos ordenados) que


posee más de dos dimensiones.

• El uso de hipermatrices es habitual cuando se trabaja con conjuntos de matrices de la misma


dimensión (i, j) y el índice (k) sirve para distinguirlas.

• Las funciones que operan con hipermatrices son análogas a las funciones que se han visto en
la introducción a MATLAB, si bien, existen algunas diferencias. Pongamos un ejemplo:
>> MM(:,:,1)=[1 2 3; 4 5 6] % generamos una hipermatriz a partir de una matriz de 2x3

MM =
primera matriz
1 2 3
4 5 6

>> MM(:, :, 2)=[9 0 1; 2 5 7] Introduce la 2ª matriz

MM(:,:,1) =

1 2 3
Muestra el primer elemento
4 5 6 del array de matrices (2x3)

MM(:,:,2) =
Muestra el segundo elemento
9 0 1
del array de matrices (2x3)
2 5 7
• Hipermatrices 3. Otro tipo de datos

• Algunas funciones de MATLAB para generar matrices admiten más de dos índices y es por ello,
por lo que se pueden utilizar para generar hipermatrices:

rand()
randn()
zeros()
ones()

Ejemplo: generar una hipermatriz (2, 4, 2) a partir de elementos aleatorios (distr. continua).

>> CC=rand(2, 4, 2) genera hipermatriz

CC(:,:,1) =

0.8147 0.1270 0.6324 0.2785 Muestra el primer elemento


0.9058 0.9134 0.0975 0.5469 del array de matrices (2x4)

CC(:,:,2) =

0.9575 0.1576 0.9572 0.8003 Muestra el segundo elemento


0.9649 0.9706 0.4854 0.1419 del array de matrices (2x4)
• Hipermatrices 3. Otro tipo de datos

• La función cat() permite concatenar matrices según diferentes “dimensiones”. Tomemos el


siguiente ejemplo:

>> A=zeros(2, 4); >> A=zeros(2, 4); >> A=zeros(2, 4);


>> B=ones(2, 4); >> B=ones(2, 4); >> B=ones(2, 4);
>> C=cat(1, A, B) >> C=cat(2, A, B) >> C=cat(3, A, B)

C= C= C(:,:,1) =

0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0
0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0
1 1 1 1
1 1 1 1
C(:,:,2) =

1 1 1 1
1 1 1 1
concatena matrices en
fila

concatena matrices en
columna genera una
hipermatriz
• Hipermatrices 3. Otro tipo de datos

• Las siguientes funciones de MATLAB pueden ser aplicadas directamente a hipermatrices:

size()
ndims()
permute()
Ipermute()
squeeze()
reshape()

• El resto de funciones de MATLAB pueden aplicarse a hipermatrices teniendo en cuenta las


siguientes consideraciones:

1. Todas las funciones MATLAB que operan sobre escalares se aplican a hipermatrices
elemento a elemento.
2. Las operaciones de MATLAB que operan sobre vectores (sum(), max(), …) se aplican
sobre matrices e hipermatrices según la primera dimensión, resultando un array de una
dimensión inferior.
3. Las funciones matriciales propias del álgebra lineal no se pueden aplicar sobre
hipermatrices. Para poderlas aplicar hay que extraer las correspondientes matrices
([Link]. con el operador (:)).
• Estructuras 3. Otro tipo de datos

• Las estructuras (struct) son agrupaciones de datos de tipo diferente bajo un mismo nombre.
Los datos se denominan miembros (members) o campos (fields). Una estructura es un nuevo
tipo de dato del que se pueden crear numerosas variables (objetos o instances). Por ejemplo, la
estructura afiliado puede contener los campos: nombre, edad, nº afilición, etc.

• En MATLAB las estructuras se crean a partir de un objeto de dicha estructura. A la hora de


generar la estructura se unirá el nombre de la estructura con el campo mediante un punto (.):

>> [Link]='Julian‘;
>> [Link]=28;

>> afiliado

afiliado =

nombre: 'Julian'
edad: 28

La misma estructura se podría haber creado de la siguiente forma:

>> afiliado=struct('nombre', 'Pedro', 'edad', 56);


>> afiliado

afiliado =

nombre: 'Pedro'
edad: 56
• Estructuras 3. Otro tipo de datos

En el ejemplo anterior, los nombres de los campos se pasan a la función struct por medio de
apóstrofos (´) seguidos del valor que se les quiere dar. El valor también puede ser la cadena
vacía (‘’) o la matriz vacía ([]).

• Con MATLAB pueden crearse vectores, matrices e hipermatrices de estructuras. Por ejemplo,
para crear un vector de estructuras de 5 elementos:

>> afiliado(5) = struct('nombre', 'Juan', 'edad', 45);

Con la sentencia anterior se crea una estructura de nombre afiliado con campos nombre y edad
que va a tener cinco elementos y el último con valores Juan y 45 (los demás son la cadena vacía
y la matriz vacía).
• Para introducir valores en los campos de la estructura se pueden utilizar los bucles for y while,
variando el valor de los campos mediante el subíndice i:

>> afiliado(i).nombre=‘nuevo nombre’;


>> afiliado(i).edad =‘nuevo edad’;

• Con MATLAB se puede añadir nuevos campos a la estructura de forma muy sencilla. Por
ejemplo para añadir el campo profesion a la estructura afiliado:

>> afiliado(5).profesion = ‘electricista’;


• Estructuras 3. Otro tipo de datos

Ejemplo: elaborar un programa en un fichero script *.m denominado club, que permita introducir
valores a los campos de una estructura de cinco elementos llamada socio con campos nombre
y cuota.

Primero creamos el script file denominado club.m e introducimos las sentencias que se indican a
continuación:
• Estructuras 3. Otro tipo de datos

Después invocamos al fichero club desde la línea de comandos y se introducen los nombres y
la cuota de los socios en el orden que se indica:

>> club
nombre: julio
cuota: 78
nombre: pedro
cuota: 23
nombre: andres
cuota: 67
nombre: juan
cuota: 90
nombre: guillermo
cuota: 100

Para comprobar que los nombres se han introducido correctamente puede comprobarse el
contenido de cada uno de los elementos de la estructura, p. ej., los datos del socio 2:

>> socio(2)

ans =

nombre: 'pedro'
cuota: 23
• Vectores o matrices de celdas 3. Otro tipo de datos

• Los vectores (matrices o hipermatrices) de celdas son vectores cuyos elementos son variables
cualquiera. En los arrays ordinarios los elementos son números o caracteres, sin embargo, en los
vectores del celdas el primer elemento puede ser un número, el segundo una matriz, el siguiente
una cadena de caracteres, etc.

• Los vectores de celdas se crean utilizando llaves a la hora de introducir el valor de sus
elementos:

vector como primer


>> vv(1)={[1 2 3]}
elemento

vv =

[1x3 double]
cadena de caracteres
>> vv(2)={'¿qué tal todo?'} como segundo elemento

vv =

[1x3 double] '¿qué tal todo?'

>> vv(3)={rand(2,2)}
matriz como tercer
elemento
vv =

[1x3 double] '¿qué tal todo?' [2x2 double]


• Vectores o matrices de celdas 3. Otro tipo de datos

Ahora, tomando el ejemplo anterior, ya pueden visualizarse todos los elementos del vector de
celdas:
>> celldisp(vv)

vv{1} =

1 2 3

vv{2} =

¿qué tal todo?

vv{3} =

0.8147 0.1270
0.9058 0.9134

Si se desea visualizar un solo elemento:

>> vv{3}

ans =

0.8147 0.1270
0.9058 0.9134
• Vectores o matrices de celdas 3. Otro tipo de datos

Una serie de funciones muy utilizadas en los trabajos con cell arrays son:

cell(m, n) crea un cell array (ca) de m filas x n columnas


celldisp(ca) muestra todos los valores de los elementos del ca
cellplot(ca) muestra una representación gráfica de las celdas del ca
iscell(ca) indica si ca es un cell array
num2cell() convierte un array numérico en un cell array
cell2struct() convierte un cell array en una estructura
struct2cell() convierte una estructura en un cell array

Ejemplo: convertir un cell array en una estructura y viceversa.

>> st=cell2struct(vv,{'vector','cadena','matriz'},2)
>> vb=struct2cell(st)'
st =
vb =
vector: [1 2 3]
cadena: '¿qué tal todo?'
[1x3 double] '¿qué tal todo?' [2x2 double]
matriz: [2x2 double]

La segunda dimensión del


cell array dará origen a los traspone el vector de
campos de la estructura respuesta
4. Ficheros *.m

• Ficheros de comandos (scripts)

• Definición de funciones (function)

• Funciones con un número variable de argumentos

• Ayuda (help) para las funciones de usuario

• Ayuda (help) de directorios

• Subfunciones

• Funciones privadas

• Funciones *.p

• Variables persistentes

• Variables globales
• Ficheros de comandos (scripts) 4. Ficheros *.m

• Los ficheros m (extensión *.m) son unos ficheros de texto sin formato (ficheros ASCII) que
representan el centro de la programación en MATLAB.

• Un tipo de ficheros m es denominado ficheros de comandos (scritp en inglés). Este tipo de


ficheros contiene una serie de comandos o sentencias que se ejecutan sucesivamente al
introducir el nombre del fichero en la línea de comandos de MATLAB y pulsar INTRO.

• Desde una línea de un script file se pueden ejecutar otros script files diferentes, e incluso el
mismo fichero de forma recursiva.

• Cuando un fichero de comandos se invoca desde la línea de comandos de MATLAB, las


variables utilizadas en el fichero se cargan directamente en el espacio de trabajo de MATLAB, y
en él permanecen aunque se haya ejecutado el fichero completamente.

• En los ficheros de comandos conviene poner puntos y coma (;) al final de cada sentencia con el
fin de evitar excesivas salidas en pantalla del programa.
• Ficheros de comandos (scripts) 4. Ficheros *.m

• La sentencia echo permite que se impriman los comandos de un script file según se va
ejecutando el fichero. Esta sentencia ofrece distintas posibilidades:

echo on activa el echo en todos los script files


echo off desactiva el echo en todos los script files
echo file on activa el echo en el fichero de función ‘file’
echo file off desactiva el echo en el fichero de función ‘file’
echo file pasa de on a off y viceversa
echo on all activa el echo e todas las funciones
echo off all desactiva el echo en todas las funciones

• MATLAB dispone de un fichero de comandos (*.m) semejante al utilizado en MSDOS:


[Link]. El fichero de MATLAB se llama startup.m y se ejecuta solo entrar en MATLAB.
En este fichero se pueden introducir todos aquellos comandos que se desee que se ejecuten
sólo abrir la sesión con MATLAB.
• Definición de funciones (function) 4. Ficheros *.m

• Las funciones (function files) permiten definir funciones exactamente iguales a las utilizadas en
las distintas aplicaciones de MATLAB.

• Los ficheros de función en su primera línea han de obedecer a una sintaxis muy concreta:

function [lista de valores de retono] = name (lista de argumentos)

name es el nombre de la función; entre corchetes van los valores de retorno (separados por
comas (,) siempre que haya más de uno); entre paréntesis va la lista de argumentos,
también separados por comas (,) siempre que haya más de uno. Al igual que en Lenguaje C,
en MATLAB pueden crearse funciones sin argumentos (datos) ni valores de retorno
(resultados). Si no hay valores de retorno se omitirán los corchetes ([]) y el signo igual (=); si
sólo hay un valor de retorno no hace falta poner corchetes. Por otro lado, si no hay
argumentos tampoco es necesario poner paréntesis.

• Un ejemplo de la edición de la primera línea en un fichero de función para un solo valor de


retorno y argumento sería:
• Definición de funciones (function) 4. Ficheros *.m

• Una diferencia muy importante con el lenguaje C es que MATLAB no modifica el valor de los
argumentos que recibe.

• Las variables definidas dentro de una función son variables locales en el sentido de que son
inaccesibles desde otras partes del programa y tampoco interfieren con variables del mismo
nombre del programa o utilizadas en otras funciones.

• Para que una función tenga acceso a una variable que no le haya sido pasada como
argumento, habría que declarar dicha variable como variable global. Como convenio este tipo
de variables se designan mediante nombres largos y letras mayúsculas.

• Los argumentos que recibe una función en MATLAB no se copian a variables locales si no son
modificados por dicha función (en términos de lenguaje C se diría que se pasan por referencia
-el programa gana en eficiencia-); sin embargo, si la función modifica los argumentos, antes se
sacan copias de los argumentos a variables locales y después se modifican las copias (en
términos de lenguaje C se diría que los argumentos se pasan por valor).

• Dentro de una función, los valores de retorno han de ser calculados en algún momento (aquí no
existe la sentencia return de C). De todos modos, no es necesario calcular todos los valores de
retorno declarados en la función sino aquellos que se necesiten en la cuando se solicitó la
llamada. En cualquier función existen dos funciones llamadas nargin y nargout que representan,
respectivamente, el número de argumentos y valores de retorno con los que la función ha sido
llamada.

• La sentencia return dentro de una función finaliza la ejecución de la función en el punto en el


que se encuentre devolviendo el control al entorno de llamada.
• Funciones con un número variable de argumentos 4. Ficheros *.m

• MATLAB dispone de una nueva forma capaz de pasar a una función un conjunto variable
argumentos. La variable utilizada con este fin se llama vargarin, que es un vector de celdas que
contiene tantos elementos como sean necesarios con el fin de poder recoger en dichos
elementos todos los argumentos que se hayan pasado en la llamada. No es necesario que
vargarin sea el único argumento en la función, sin embargo, sí debe ser el último, ya que recoge
todos los argumentos a partir de una determinada posición. Es conveniente recordar que a los
elementos de un cell array se accede mediante llaves ({}) y no mediante paréntesis (()).

• Del mismo modo que para el caso de los argumentos, MATLAB dispone de otra forma para que
en una función exista un número indeterminado de valores de retorno. La variable en este caso
es varagout, que también es un cell array que agrupa los últimos valores de retorno de la
función. En una función puede haber más valores de retorno que varagout pero éste debe ser el
último. El cell array varagout se debe crear dentro de la función y hay que dar valor a sus
elementos antes de salir de la función. Es conveniente recordar que las variables nargin y
nargout indican el número de argumentos y de valores de retorno con el que ha sido llamada la
función.
• Ayuda (help) para las funciones de usuario 4. Ficheros *.m

• Del mismo modo que las funciones de MATLAB, las funciones de usuario tienen su propio help
(las primeras líneas de comandos en las funciones en MATLAB tienen una importancia capital ya
que permiten construir un help sobre esa función) lo que se consigue de la siguiente forma:

>> help funcion_propia

El programa responderá escribiendo las primeras líneas de comentario (comienzan


detrás del carácter %) del fichero función_propia.m. De estas líneas de comentarios,
la primera tiene una significación especial (es la denominada línea H) y en ella hay
que intentar poner la información más relevante de la función. La razón es que existe
una función denominada lookfor que permite encontrar una determinada palabra en
la primera línea de todas las funciones *.m.
• Ayuda (help) de directorios 4. Ficheros *.m

• MATLAB permite a los usuarios crear una ayuda general para todas las funciones ubicadas en
un determinado directorio. Para ello hay que crear en ese directorio un fichero denominado
contents.m. Un fichero típico correspondiente al directorio \toolbox\local de MATLAB es:
>> help local
General preferences and configuration information.

Saved preferences files.


startup - User startup M-file (see startupsav as sample).
finish - User finish M-file (see finishsav or finishdlg as sample).
matlabrc - Master startup M-file.
hgrc - Master startup M-file for Handle Graphics.
initprefs - Runs all PREFSPANEL functions.
simulinkrc - Master startup M-file for Simulink
pathdef - Search path defaults.
printopt - Printer defaults.

Preference commands.
cedit - Set command line editor keys.

Configuration information.
hostid - MATLAB server host identification number.
license - Return license number or perform licensing task.
version - MATLAB version number.

Utilities.
userpath - User environment path.

• Si el fichero contents.m no existe, se listan las primeras líneas de comentarios (líneas H) de


todas las funciones del directorio. Para que help de directorios funcione correctamente hace falta
que el directorio esté en el search path de MATLAB o que sea el directorio actual.
• Subfunciones 4. Ficheros *.m

• En un principio, en MATLAB a cada función se la ha de asignar un fichero *.m con el mismo


nombre de la función, estos ficheros deben ser diferentes para cada una de las funciones. En las
últimas versiones de MATLAB se han introducido las denominadas sub-funciones. Estas sub-
funciones son funciones adicionales diferentes definidas en un único fichero *.m, con nombres
diferentes del nombre del fichero (y de la función principal) y que sólo pueden ser llamadas por
las funciones contenidas en ese fichero, resultando inaccesibles a las funciones externas a dicho
fichero.

Ejemplo: Crear dos subfunciones dentro del fichero funcion.m:


• Subfunciones 4. Ficheros *.m

Si ahora se pasan a la función los argumentos 30 y 15, el resultado con MATLAB sería:

>> funcion (30,15)

ans =

45

El funcionamiento de la función o sentencias del fichero funcion.m es el siguiente:

1. Se crea un function file llamado funcion.m (función principal) con dos parámetros a y b en el
que se han definido dos subfunciones: funcion1 y funcion2.
2. Se pasan desde la función principal los argumentos a y b a los parámetros p y q de la
subfunción funcion1.
3. Desde la subfunción funcíon1 se pasan los argumentos p y q a los parámetros l y m
mediante la llamada a una nueva subfunción funcion2.
4. En la subfunción funcion2 se realiza la suma de los parámetros l y m.
5. El valor de la suma pasa a la variable z, que, a su vez, pasa a la x y finalmente a la y. Este
valor es entregado en pantalla mediante la variable ans.
• Funciones privadas 4. Ficheros *.m

• Se denominan funciones privadas (private) a aquellas que no pueden ser llamadas desde otra
función, aunque éstas se encuentren en el path o en el directorio actual.

• Únicamente ciertas funciones están autorizadas para poder utilizar las funciones privadas.

• Las funciones privadas se definen en subdirectorios denominados private y sólo pueden ser
llamadas desde por funciones definidas en el directorio padre del subdirectorio private.

• En la búsqueda de nombres que hace MATLAB cuando encuentra un nombre en una


expresión, las funciones privadas se buscan inmediatamente después de las subfunciones y
antes que las funciones de tipo general.

• Para buscar la ayuda de una función privada sólo hay que escribir:

>> help private/fun_priv

donde private es el directorio en el que se ha ubicado la función privada: fun_priv.


• Funciones *.p 4. Ficheros *.m

• Las funciones *.p son funciones *.m pero previamente compiladas con la función pcode.

• La gran ventaja de las funciones *.p frente a las funciones *.m es que trabajan a mayor
velocidad que las *.m. Además, las funciones *.p ocultan el código de los ficheros ASCII
correspondiente a las funciones *.m de MATLAB.

• Por defecto, el resultado del comando pcode func.m es el fichero func.p en el directorio actual
(el fichero func.m puede estar en cualquier directorio del search path). El comando
pcode –inplace func.m crea el fichero func.p en el mismo directorio que se encuentra func.m.
• Variables persistentes 4. Ficheros *.m

• Las variables persistentes (persistent) son variables locales a una determinada función
(pertenecen al espacio de trabajo de la función y sólo son visibles en ese espacio) las cuales
conservan su valor entre distintas llamadas a la función.

• Las variables locales se de tipo persistent se crean y se destruyejn cada vez que se ejecuta la
función, y han de estar definidas en ficheros de tipo de función (function filies) y n o en ficheros
de comandos (script files). Para distinguirlas de otros tipos de variables es habitual utilizar letras
mayúsculas precedidas por el vocablo persistent separando el nombre de las variables mediante
espacios en blanco:

>> persistent FUNCION1 FUNCION2

• Las variables persistentes se inicializan mediante la matriz vacía ([]), y permanecen en


memoria hasta que se ejecuta clear de la función o cuando se modifica el fichero *.m.

• Para evitar que se modifique un fichero *.m hay que utilizar el comando mlock file.m. El
comando munlock file.m desbloquea el fichero, mientras la función mislocked permite saber si
el fichero está bloqueado o no.
• Variables globales 4. Ficheros *.m

• Las variables globales son aquellas que, además de en el espacio de trabajo, son visibles
para todas las funciones en las que sean requeridas. Estas variables se declaran mediante la
expresión global (precede al nombre de las variables), con letras mayúsculas y el nombre
separado mediante espacios en blanco. Por ejemplo:

>> global VARIABLE1 VARIABLE2


5. Entrada y salida de datos

• Importar datos de otras aplicaciones

• Exportar datos a otras aplicaciones


• Importar datos de otras aplicaciones 5. Entrada y salida de datos

• Hasta ahora se han visto dos sentencias de MATLAB que permiten la introducción y
visualización de datos. Las sentencias son input y disp.

• Existen numerosas formas de pasar datos a MATLAB desde otras aplicaciones, como, por
ejemplo, puede ser EXCEL. Analicemos algunas de ellas:

1. Mediante las órdenes copy y paste del entorno WINDOWS.- El problema


que tiene este método es que los datos pasados a la matriz o vector de
MATLAB no se pueden editar. Veamos un ejemplo:
• Importar datos de otras aplicaciones 5. Entrada y salida de datos

>> A=[ ]

>> A=[1 2
3 4
5 6
7 8
]

A=

1 2
3 4
5 6
7 8

• Los datos son editables ahora mediante el cambio de los valores de los elementos de la matriz:

>> A(1,2)=90

A=

1 90
3 4
5 6
7 8
• Importar datos de otras aplicaciones 5. Entrada y salida de datos

2. Creando un fichero *.m mediante un editor de textos.- Este sistema no


genera problemas de edición.

Tomando, por ejemplo, como tratamiento de textos el WORD:

Ahora guardamos los datos en el fichero datos.m y lo pasamos al espacio de


trabajo de MATLAB:
• Importar datos de otras aplicaciones 5. Entrada y salida de datos

Está claro que cuando creamos el fichero *.m podemos editar los datos a
nuestro antojo.
• Importar datos de otras aplicaciones 5. Entrada y salida de datos

3. Creando un flat file.- Este tipo de ficheros están formados por datos
introducidos en filas de longitud constante (delimitadas con intro) y separados
por espacios en blanco. Los ficheros han de tener extensión *.txt ([Link].:
[Link]).

Ahora sólo hay que introducir el comando: >> B=load(‘[Link]’) para que los
datos pasen a la matriz B.
• Importar datos de otras aplicaciones 5. Entrada y salida de datos

Como se observa en la figura la matriz B queda cargada con valores cuyo


formato decimal es el de MATLAB previamente establecido, y que no
corresponde al introducido en el fichero flat.
• Exportar datos a otras aplicaciones 5. Entrada y salida de datos

• Al igual que en el caso de importación de datos, con MATLAB se pueden exportar datos a
otras aplicaciones informáticas como son EXCEL o WORD.

1. Guardando la información relativa a una sesión de trabajo en un fichero


accesible a WORD.- Una sesión de trabajo puede ser guardada en un fichero
accesible a WORD ([Link]) utilizando el comando:

>> diary [Link]

Con la introducción de la línea anterior no sólo se crea el fichero


[Link] sino que también se inicializa la grabación.

diary on indica al programa que comience a grabar en el fichero *.txt


previamente definido.

diary off indica al programa que finalice la grabación en el fichero *.txt


previamente definido.

La conmutación entre ON y OFF, y viceversa, se puede hacer con teclear


únicamente diary.

Para abrir el fichero con WORD, en MATLAB diary ha de estar en OFF.


• Exportar datos a otras aplicaciones 5. Entrada y salida de datos

Ejemplo:

Crea el fichero y lo
abre para grabación

Cierra la grabación de
sesión de trabajo

Vuelve a abri la
grabación de sesión
de trabajo

Deja cerrada la
grabación
• Exportar datos a otras aplicaciones 5. Entrada y salida de datos

Abriendo el fichero con WORD se habría grabado:

Como se puede
observar no se ha
grabado la introducción
y visualización de la
variable B
• Exportar datos a otras aplicaciones 5. Entrada y salida de datos

• También se puede guardar una sesión de trabajo con MATLAB en WORD mediante el
comando save y la opción –ascii. Tomando para ejemplo el fichero vectorD:

• Ahora se puede abrir el fichero con WORD:


• Exportar datos a otras aplicaciones 5. Entrada y salida de datos

• También se puede abrir el fichero con EXCEL:

• Siempre que se utilice el comando save –ascii hay que tener en cuenta que sólo se
guardarán los valores de las variables en código ASCII pero no su nombre. Cuando
estos valores se quieran recuperar en MATLAB se introducirán en una sola matriz:

>> E=load('vectorD', '-ascii')

E=

1 2 3 4 5 6
6. Lectura y escritura de ficheros

• Funciones fopen y fclose

• Funciones fscanf, sscanf, fprintf, sprintf

• Funciones fread y fwrite


• Funciones fopen y fclose 6. Lectura y escritura de ficheros

• Las funciones fopen y fclose se utilizan para abrir y cerrar ficheros, respectivamente.

• Las función fopen tiene la sintaxis siguiente:

>> [fi, texto] = fopen (‘nombreFichero’, ‘c’)

donde:

fi es un valor de retorno que sirve como identificador.

texto es un mensaje que aparecerá en la pantalla en caso de error.

nombreFichero es el nombre del fichero que se desea abrir.

c es un carácter (o dos caracteres) que indica el tipo de operación que se


desea realizar. Los caracteres más utilizados son:

r lectura
w escritura reemplazando
a escritura añadiendo
r+ lectura y escritura
• Funciones fopen y fclose 6. Lectura y escritura de ficheros

• Cuando por alguna razón el fichero no puede ser abierto, al introducir la línea de
comando anterior MATLAB devuelve un -1. El valor de retorno texto dará información
sobre el tipo de error producido.

• Una vez llevadas a cabo las operaciones de lectura y/o escritura realizadas, hay que
proceder a cerrar el fichero mediante la función fclose:

>> st = fclose (‘fi’)

donde:

st es un valor de retorno que indica diferentes condiciones de error.

fi es el identificador de fichero que se utilizó en fopen.

• Si se desean cerrar todos los ficheros abiertos durante la sesión de trabajo hay que
utilizar:

>> st = fclose (‘all’)


• Funciones fopen y fclose 6. Lectura y escritura de ficheros

Ejemplo:
Introduce el vector de cuatro elementos
>> u=[1 3 5 7]; crea y abre un fichero de lectura-escritura
>> iden=fopen('[Link]','a+');
>> k=length(u); asigna una variable la longitud del vector
>> for i=1:k
fprintf(iden,'%.2f',u(i)); Imprime los elementos del vector como
fprintf(id1,'\n'); números reales de dos decimales
end salta línea
>> fclose(iden);
cierra el fichero

Si abrimos el fichero desde el espacio de trabajo de MATLAB:


• Funciones fscanf, sscanf, fprintf, sprintf 6. Lectura y escritura de ficheros

• Estas funciones permiten la lectura y escritura en ficheros ASCII.

• La sintaxis general para fscanf es la siguiente:

>> [A, N] = fscanf (fi, ‘cadena de control’, size)

donde:

A y N indican, respectivamente, la variable donde se desea que se


introduzcan los valores leidos y el número de datos introducidos.

fi es el identificador de fichero devuelto por fopen.

cadena de control ha de ir encerrada entre apóstrofes y contiene las


especificaciones de formato de las variables:

%s cadenas de caracteres
%d enteras
%f coma flotante
%lf doble precisión

size es un argumento opcional que indica el tamaño del vector o matriz a


leer.

• La función sscanf es similar a fscanf pero se utiliza cuando la entrada de caracteres a


leer no provienen de un fichero sino de una cadena.
• Funciones fscanf, sscanf, fprintf, sprintf 6. Lectura y escritura de ficheros

Ejemplos.- Cargar los datos que existen en los fichero [Link] y vectorD en la variable
P (estos ficheros se utilizaron anteriormente en otros ejemplos).

>> f2=fopen('[Link]','r+') >> f2=fopen('vectorD','r+')

f2 = f2 =

3 3

>> P=fscanf(f2, '%f') >> P=fscanf(f2, '%f')

P= P=

12.8000 1
-2.4000 2
6.0000 3
21.4000 4
-0.2300 5
3.1000 6
2.2000
-45.7000 >> fclose(f2)
9.2400

>> fclose(f2)
• Funciones fscanf, sscanf, fprintf, sprintf 6. Lectura y escritura de ficheros

• La función fprintf sirve para imprimir (escribir) datos formateados en un fichero


previamente abierto y al que se ha asignado un identificador. Su sintaxis es:

>> fprintf = (fi, ‘cadena de control’, var1, var2, … )

donde:

var1, var2, … indican las variables que se quieren imprimir.

Ejemplo.- Tomemos el fichero [Link] que está vacío e introduzcamos en el la


siguiente línea de texto: la edad de Pedro es 23 y su peso de 58 Kg.

Antes de escribir la frase hemos de comprobar que el fichero está vacío:


• Funciones fscanf, sscanf, fprintf, sprintf 6. Lectura y escritura de ficheros

Introducimos en MATLAB:

>> f3=fopen('[Link]','r+');
>> edad=23;
>> peso=58;
>> fprintf(f3, 'la edad de Pedro es: %d y su peso %d Kg', edad, peso);
>> fclose(f3);

Y ahora el fichero [Link] queda:


• Funciones fscanf, sscanf, fprintf, sprintf 6. Lectura y escritura de ficheros

• La función sprintf es similar a fsprintf pero convierte el resultado de retorno en una


cadena de caracteres que se asignan a una variable sin escribirse en un fichero. Su
sintaxis es:

>> resultado = sprintf (fi, ‘cadena de control’, var1, var2, … );

• Tomando el ejemplo anterior:

>> resultado = sprintf(f3, 'la edad de Pedro es: %d y su peso %d Kg', edad, peso);

Donde resultado es una variable de cadena.

• La función sprintf es la más utilizada para convertir números en cadenas de


caracteres.
• Funciones fread y fwrite 6. Lectura y escritura de ficheros

• Las funciones fread y fwrite son similares a fscanf y fprintf con la diferencia de que se
utilizan para leer y escribir en ficheros binarios y no de texto (ASCII). La ventaja de
utilizar ficheros binarios y no de texto es que los procesos de lectura y escritura se
realizan de forma mucho más rápida y que ambos procesos son a la vez más precisos
(no se pierden decimales al escribir). Todo esto es particularmente significativo en
grandes ficheros de datos. Por el contrario, los ficheros binarios no permiten editar datos.

Ejemplo: Se desea escribir los datos de una matriz dada (A) en un fichero binario llamado
[Link]. Posteriormente se desea introducir en otra matriz B los datos de la matriz
grabada en el fichero.
>> id1=fopen('[Link]', 'r');
>> B=fread(id1);
>> B

>> A=[1 2 3; 4 5 6; 7 8 9]; B=


>> id1=fopen('[Link]', 'w');
>> fwrite(id1,A); 1
>> fclose(id1); 4
7
2
5
8
3
6
9
• Funciones fread y fwrite 6. Lectura y escritura de ficheros

En el primer grupo de sentencias se ha creado una matriz 3x3, también, se ha creado y


abierto un fichero para escribir, se ha escrito en el fichero la matriz en forma de columna, y,
por ultimo, se ha cerrado el fichero.

En el segundo grupo de sentencias se ha abierto el fichero [Link] para la lectura, se


han asignado los datos de columna a una matriz B y, por último, se han mostrado en
pantalla los elementos de la matriz B.
fin

También podría gustarte