Vectores Con Matlab

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 24

93

5 Vectores en MATLAB
Los vectores son dispositivos para representar y manejar variables que pueden tener varios
componentes de un mismo tipo.

5.1 Definición de un vector

Un vector se puede crear con la notación de corchetes [ ] para asignar su contenido

Nombre del vector = [lista de sus componentes]

Notación para referirse a los componentes de un vector

Notación Matemática: xi
Notación MATLAB: x(i)

x es el nombre del vector


i es el número de la celda (numeradas en forma natural desde 1)

Para crear un vector fila los componentes deben separarse con espacios o con comas.

Crear un vector fila de tres componentes


>> x=[5, 7, 4];
>> x
x=
5 7 4

Si se desea crear un vector columna, los elementos deben separarse con punto y coma.

Crear un vector columna de tres componentes


>> t=[6; 9; 2];
>> t
t =
6
9
2

Los vectores pueden manejarse dinámicamente. Esta posibilidad es muy útil:

Agregar un nuevo elemento al final del vector x anterior:


>> x=[x, 8];
>> x
x=
5 7 4 8

Agregar un nuevo elemento al inicio del vector x anterior:


>> x=[6, x];
>> x
x=
6 5 7 4 8

Para eliminar un elemento, se lo sustituye con un elemento nulo

Eliminar el tercer elemento del vector x.


>> x(3)= [ ];
>> x
x=
6 5 4 8
94

Eliminar el vector completo


>> x= [ ];
>> x
x=[]

También se puede crear un vector asignando valores a sus componentes con el índice:

Crear un vector fila de tres componentes


>> x(1)=5;
>> x(2)=7;
>> x(3)=4;
>> x
x=
5 7 4

El manejo individual de los componentes requiere el uso de un índice

Crear un vector fila


>> x=[6, 7, 4, 8, 3];
>> x
x=
6 7 4 8 3

Mostrar el tercer componente


>> x(3)
ans =
4

Sustituir el cuarto componente por el 9


>> x(4)=9
x=
6 7 4 9 3

Mostrar los componentes 2, 3 y 4


>> x(2:4)
ans =
7 4 9

Insertar en la posición 3 el valor 8


>> x=[x(1:2),8,x(3:5)]
x=
6 7 8 4 9 3

5.2 Algunas funciones de MATLAB para manejo de vectores

Longitud de un vector

>> v=[2 4 7 3 5 7 8 6];


>> n=length(v)
n=
8

Suma de los componentes de un vector

>> s=sum(v)
s=
42
95

Máximo valor de los componentes

>> m=max(v)
m=
8

Máximo valor de los componentes y su posición

>> [m,p]=max(v)
m=
8
p=
7

Media o promedio aritmético


>> p=mean(v)
p=
5.2500

Petenencia de un elemento en un vector


>> v=[2 4 7 3 5 7 8 6];
>> e=ismember(8,v)
e=
1
>> e=ismember(9,v)
e=
0

Determinar adicionalmente la posición del elemento en el vector


>> [e,p]=ismember(8,v)
e=
1
p=
7

Determinar cuales elementos de un vector son iguales a un elemento dado


>> v=[2 4 7 3 5 7 8 6];
>> t=ismember(v,7)
t=
0 0 1 0 0 1 0 0 El resultado es un vector de coincidencias

Determinar cuantos elementos de un vector son iguales a un elemento dado


>> v=[2 4 7 3 5 7 8 6];
>> t=ismember(v,7)
t=
0 0 1 0 0 1 0 0
>> n=sum(t)
n=
2

OBSERVACIÓN: Para facilitar el aprendizaje de los algoritmos y concentrarnos en la lógica de


la resolución de los problemas, conviene usar estas funciones definidas en el lenguaje
MATLAB.

En una etapa posterior se desarrollará el conocimiento y la programación de estas funciones y


de otras nuevas.
96

5.3 Algoritmos con vectores

Nota para pruebas con vectores. Al realizar pruebas con vectores de diferente longitud
conviene borrar de la memoria el vector de la ejecución anterior pues el vector aún mantiene
los elementos de la ejecución anterior. Se sugiere incorporar en el programa o en la ventana de
comandos una instrucción para iniciar el vector en cada prueba insertando el comando clear
con el nombre del vector, o iniciándolo como un vector vacío definiéndolo con la notación [ ]

Ejemplo. clear x; o x=[ ];

Todas las variables de los programas son visibles desde fuera del programa, es decir que
están disponibles y pueden usarse desde la ventana de comandos con el nombre con que
fueron creadas.

5.3.1 Ingreso de datos de un vector a un programa

Se pueden ingresar los datos individualmente y agregarlos al vector (agregar cada dato a la
derecha). (Previamente requiere conocer cuantos datos se leerán)

n=input('cuantos datos? ');


v=[ ];
for i=1:n
x=input('ingrese dato ');
v=[v, x];
end

También se pueden agregar los datos hacia la izquierda

n=input('cuantos datos? ');


v=[ ];
for i=1:n
x=input('ingrese dato ');
v=[x, v];
end

La manera tradicional es el ingreso de cada dato individualmente al vector usando un índice.


(Previamente requiere conocer cuantos datos se leerán)

n=input('cuantos datos? ');


for i=1:n
x=input('ingrese dato ');
v(i)=x;
end

La manera más simple es ingresar el vector completo al programa.


La función length detecta la cantiadad de datos que ingresaron al vector

v=input('ingrese el vector ');


n=length(v);
97

5.3.2 Asignación de valores aleatorios a un vector dentro de un programa

Asignación individual

Ejemplo. Crear un vector aleatorio agregando cada dato al vector (números de un dígito)

n=input('cuantos números? ');


v=[ ];
for i=1:n
x=fix(rand*10);
v=[v, x];
end

También se puede crear el vector asignando los valores mediante un índice

n=input('cuantos números? ');


for i=1:n
v(i)=fix(rand*10);
end

Se puede asignar el vector aleatorio completo en una instrucción

n=input('cuantos números? ');


v=fix(10*rand(1,n));

Se ha generado un vector de 1 fila y n columnas con números aleatorios de una cifra

Ejemplo. Dado un vector, sume sus componentes.

x: vector
n: número de componentes
s: suma de los componentes

x=input('Ingrese vector ');


n=length(x);
s=0;
for i = 1: n
s=s+x(i);
end
disp('La suma es');
disp(s);

Salida

Ingrese vector [7 8 9 12 6]
La suma es
42

NOTA: Este ejercicio emula la función sum existente en MATLAB:


>> x=[7 8 9 12 6];
>> s=sum(x)
42
98

Ejemplo. Dado un vector, sume sus componentes con valor impar.

x: vector
n: número de componentes
s: suma de los componentes

%Suma de componentes con valor impar de un vector


x=input('Ingrese vector ');
n=length(x);
s=0;
for i = 1: n
if mod(x(i), 2) ~= 0
s=s+x(i);
end
end
disp(s);

Salida

Ingrese vector [7 8 9 12 6]
16

Ejemplo. Dado un vector, encuentre el mayor valor.

x: vector
n: número de componentes
m: el mayor valor

x=input('Ingrese vector ');


n=length(x);
m=x(1);
for i = 2: n
if x(i) > m
m = x(i);
end
end
disp(m);

NOTA: Este ejercicio emula la función MAX de MATLAB:

>> x=[7 8 9 12 6];


>> s=max(x)
12

Ejemplo. Dado un vector, muestre sus componentes en orden opuesto.

x: vector dato
y: vector resultado
n: número de componentes

%Invertir un vector fila


x=input('Ingrese vector ');
n=length(x);
j=n;
for i = 1:n
y(i)=x(j);
j=j-1;
end
disp(y);
99

Otra solución para invertir un vector

%Invertir un vector
x=input('Ingrese vector ');
n=length(x);
y=[ ];
for i = 1:n
y=[x(i),y];
end
disp(y);

Ejemplo. Generar un vector con números aleatorios de dos cifras. Calcular el promedio y
mostrar los elementos mayores al promedio

n: número de componentes
x: vector
p: promedio

n=input('Cantidad de elementos ');


for i = 1: n
x(i)=fix(rand*100);
end
disp(x);
p=mean(x);
disp(p);
for i = 1: n
if x(i)>p
disp(x(i));
end
end

Salida

Cantidad de elementos 8
81 90 12 91 63 9 27 54 vector
53.3750 promedio
81 elementos mayores al promedio
90
91
63
54
100

Ejemplo. Almacene en un vector los números de la secuencia de Ulam y muestre la secuencia


comenzando desde el final

x: valor inicial para la secuencia


u: vector con los números de la secuencia
i: indice

x=input('Valor inicial para la secuencia ');


n=0;
while x>1
if mod(x, 2) == 0
x=x/2;
else
x=3*x+1;
end
n = n + 1;
u(n) = x;
end
for i=n:-1:1
disp(u(i));
end

Salida

Valor inicial para la secuencia 10


1
2
4
8
16
5

Otra solución para el ejemplo anterior (vector con números de la secuencia de Ulam)

En esta solución el vector se construye dinámicamente

x: valor inicial para la secuencia


u: vector con los números de la secuencia

x=input('Valor inicial para la secuencia ');


u=[ ];
while x>1
if mod(x, 2) == 0
x=x/2;
else
x=3*x+1;
end
u=[u, x];
end
disp(u);

Salida

Valor inicial para la secuencia 10


5 16 8 4 2 1
101

Ejemplo. Dado un número entero, encuentre los dígitos de su equivalente en el sistema


binario.

x: dato
b: vector que contiene los dígitos en el sistema binario.

x=input('Ingrese un numero ');


b=[ ];
while x>0
d=mod(x,2);
x=fix(x/2);
b = [d, b];
end
disp(b);

Salida

Ingrese un numero 23
10111

Nota: 23 en el sistema decimal, es equivalente a 10111 en el sistema binario

Ejemplo. Construya un vector con n números primos

n: cantidad de números primos


x: números naturales
p: vector con los números primos

n=input('¿Cuantos números primos? ');


x=1;
p = [ ];
while length(p) < n
c=0;
for d=1: x
if mod(x, d) == 0
c=c+1;
end
end
if c<=2
p = [p, x];
end
x=x+1;
end
disp(p);

Salida

¿Cuantos números primos? 8

1 2 3 5 7 11 13 17 19
102

Ejemplo. Simule n lanzamientos de un dado. Muestre la cantidad de veces que sale cada
número.

n: dato
d: número obtenido para el dado en cada lanzamiento
c: vector con la cantidad de resultados de cada número del dado

%Conteo de resultados de un dado


n=input('¿cuantas pruebas? ');
c=[0 0 0 0 0 0];
for i=1:n
d=fix(rand*6)+1;
switch d
case 1, c(1) = c(1)+1;
case 2, c(2) = c(2)+1;
case 3, c(3) = c(3)+1;
case 4, c(4) = c(4)+1;
case 5, c(5) = c(5)+1;
case 6, c(6) = c(6)+1;
end
end
disp(c);

Salida

>> dado
¿cuantas pruebas? 6000
999 988 1016 1007 986 1004

Ejemplo. Simule n lanzamientos de un dado. Muestre la cantidad de veces que sale cada
número.

Una solución más compacta para el ejemplo anterior

n: dato
d: número obtenido para el dado en cada lanzamiento
c: vector con la cantidad de resultados de cada número del dado

%Conteo de resultados de un dado


n=input('¿cuantas pruebas? ');
c=[0 0 0 0 0 0];
for i=1:n
d=fix(rand*6)+1;
c(d)=c(d)+1;
end
disp(c);
103

Ejemplo. Búsqueda en un vector. Escriba un programa que lea desde el teclado un vector y un
número y determine si el valor se encuentra en el vector.

v: vector con datos


x: valor que se desea buscar en el vector
e: resultado de la búsqueda (valor lógico)

Soluciones incompletas

v=input('ingrese vector ');


n=length(v);
x=input('ingrese dato para buscar ');
for i=1:n
if x==v(i)
disp('si');
else
disp('no');
end
end

Salida

>> v=[7,9,6,8,9];

ingrese vector v
ingrese dato para buscar 9
no
si
no
no
si

v=input('ingrese vector ');


n=length(v);
x=input('ingrese dato para buscar ');
for i=1:n
if x==v(i)
e=1;
else
e=0;
end
end
if e==1
disp('si')
else
disp('no');
end

Salida

>> v=[7,9,6,8,9];

ingrese vector v
ingrese dato para buscar 8
no
104

Solución correcta

v=input('ingrese vector ');


n=length(v);
x=input('ingrese dato para buscar ');
e=0;
for i=1:n
if x==v(i)
e=1;
end
end
if e==1
disp('si')
else
disp('no');
end

Salida

>> v=[7,9,6,8,9];

ingrese vector v
ingrese dato para buscar 8
si

Ejemplo. Determinar si un elemento está en el vector y su posición


v: vector con datos
x: valor que se desea buscar en el vector
e: resultado de la búsqueda (valor lógico)
p: posición del valor x en el vector v

v=input('ingrese el vector de datos ');


x=input('ingrese el número para buscar ');
n=length(v);
e=0;
p=0;
for i=1:n
if x == v(i)
e=1
p=i;
end
end
if e==0
disp('el valor no esta en el vector');
else
disp('el valor está almacenado en la posición');
disp(p);
end

Salida

>> v=[7,9,6,8,9];
ingrese el vector de datos v
ingrese el número para buscar 8
el valor está almacenado en la posición
4
105

NOTA: Se puede resolver directamente con la función ismember de MATLAB:

>> v=[7,9,6,8,9];
>> e=ismember(8,v)
e= el valor 1 indica que 8 está incluido en v
1
>> [e, p]=ismember(8,v)
e=
1
p=
4 también se puede conocer su posición en v

Ejemplo. Obtener una muestra de tamaño m de un conjunto de tamaño n sin repeticiones

n=input('tamaño población ');


m=input('tamaño muestra ');
v=[ ];
while length(v)<m
x=fix(rand*n)+1;
if ismember(x,v) == 0
v=[v, x];
end
end
disp(v)

Ejemplo. Desarrolle un un algoritmo para asignar las parejas para el juego del “amigo secreto”.
Existen n varones numerados del 1 a n, y n mujeres numeradas de n+1 hasta 2n. la asignación
de parejas debe ser aleatoria de tal manera que cada persona pertenezca solamente a una
pareja.

El vector a contendrá los números de los varones


El vector b contendrá los números de las mujeres, asignados aleatoriamente.

n = input('cuantas parejas ');


for i=1:n
a(i) = i;
end
b = [ ];
while length(b)<n
p = n + fix(rand*n)+1;
e = ismember(p, b);
if e==0
b = [b, p];
end
end
for i=1:n
disp([a(i), b(i)]);
end
106

Ejemplo. Generar una tabla de 15 números con valores entre 1 y 25

t=[ ];
while length(t)<15
x=fix(rand*25)+1;
if ismember(x,t)==0
t=[t,x];
end
end
disp(t);

Ejemplo. Escriba un programa para organizar los 32 equipos participantes en un campeonato


en 8 grupos de 4 equipos. Cada grupo debe tener un equipo fijo que debe ser un dato inicial

c=input('Ingrese los 8 equipos fijos en cada grupo ');


e=c; %Contiene todos los equipos para control de repetición
for i=1:8
g=[c(i)]; %Cada grupo de 4 se inicia con un equipo fijo
while length(g)<4
x=fix(32*rand)+1;
if ismember(x,e)==0 %Control de repetición
g=[g,x];
e=[e,x];
end
end
disp('Grupo');
disp(i);
disp('Equipos');
disp(g);
end

Ejemplo. Escriba un programa que lea desde el teclado dos vectores y determine la cantidad
de elementos comunes entre ambos vectores.

a, b: vectores con datos


c: conteo de datos comunes

a=input('primer vector ');


b=input('segundo vector ');
c=0;
for i=1: length(a)
if ismember(a(i),b)==1
c=c+1;
end
end
disp('cantidad elementos comunes');
disp(c);
107

Ejemplo. Escriba un programa que lea desde el teclado dos vectores y determine cuales son
los elementos comunes entre ambos vectores.

a, b: vectores con datos


x: vector con elementos comunes

a=input('primer vector ');


b=input('segundo vector ');
x=[ ];
for i=1: length(a)
if ismember(a(i),b)==1
x=[x, a(i)];
end
end
disp('elementos comunes');
disp(x);

Ejemplo. Escriba un programa que sea equivalente a la función MIN de MATLAB. El


programa debe leer un vector y determinar cual es el menor valor y la posición en el vector.

x=input('Ingrese un vector ');


n=length(x);
e=x(1);
p=1;
for i=2:n
if x(i)<e
e=x(i);
p=i;
end
end
disp(e);
disp(p);

Ejemplo. Escriba un programa para ordenar en forma ascendente los datos de un vector
usando la función MIN de MATLAB

x: vector con los datos


y: vector con los datos ordenados

El algoritmo toma el menor dato del vector X y lo agrega al vector Y, pero además lo elimina del
vector X.

x=input('Ingrese el vector ');


y=[ ];
while length(x)>0
[e,p]=min(x);
y=[y, e];
x(p)=[ ];
end
disp(y);
108

Ejemplo. Escriba un programa para ordenar un vector pero sustituyendo a la función MIN.con
instrucciones

x=input('Ingrese el vector ');


y=[ ];
while length(x)>0
n=length(x);
e=x(1);
p=1;
for i=2:n
if x(i)<e
e=x(i);
p=i;
end
end
y=[y, e];
x(p)=[ ];
end
disp(y);

Ejemplo. Colocar el mayor valor de un vector en la última posición

x: vector
n: número de componentes

El algoritmo compara cada dato con el último elemento, cada vez que es mas grande, los
intercambia. Al final, en la última posición quedará el mayor valor.

x=input('Ingrese vector ');


n=length(x);
for j = 1: n-1
if x(j) > x(n)
t = x(j);
x(j) = x(n);
x(n) = t;
end
end
disp(m);

Ejemplo. Ordenar los datos de un vector con el método de intercambio de elementos. Este
algoritmo extiende la idea del algoritmo anterior

x: vector con los datos, su contenido es modificado para ordenarlo

x=input('Ingrese un vector ');


n=length(x);
for k=n:-1:2
for j=1:k-1
if x(j) > x(k)
t=x(j);
x(j)=x(k);
x(k)=t;
end
end
end
disp(x)
109

Ejemplo. Manejo de un conjunto. Escriba un programa para simular algunas operaciones de


manejo de un conjunto mediante un menú que ofrezca las siguientes opciones:

1) Agregar un elemento al conjunto


2) Eliminar un elemento del conjunto
3) Determinar si un elemento pertenece al conjunto
4) Salir

Use un vector para almacenar el conjunto. Al inicio es un vector nulo.

En cada opción el programa debe pedir un elemento al usuario y realizar la operación


solicitada.

v=[];
x=0;
while x~=4
disp('1) Agregar elemento');
disp('2) Eliminar elemento');
disp('3) Pertenecia de un elemento');
disp('4) Salir');
x=input('Elija una opcion ');
switch x
case 1,
e=input('ingrese elemento ');
if ismember(e,v)==0
v=[v, e];
end
case 2,
e=input('ingrese elemento ');
[z,p]=ismember(e,v);
if z == 1
v(p)=[];
end
case 3;
e=input('ingrese elemento ');
z=ismember(e,v);
disp(z);
end
end
112

6 Cadenas de caracteres

Las aplicaciones computacionales del manejo de cadenas de caracteres son de interés general
y también pueden ser parte de la solución de problemas de ingeniería.

Una cadena de caracteres es una secuencia de letras, números y símbolos especiales. La


representación de estos objetos en la memoria es diferente a la representación de los números.

6.1 Algunos comandos para cadenas de caracteres

Una cadena de caracteres se las expresa con la notación de apóstrofes:

Asignación directa de una cadena de caracteres. Se la debe escribir entre apóstrofes


>> x='problema';

Una subcadena es una porción de una cadena de caracteres


>> t = x(2:6)
t=
roble

La notación dinámica de MATLAB permite operar con facilidad cadenas de caracteres

Agregar y eliminar caracteres


>> x=[x,'s']
x=
problemas
>> x(8)=''
x=
problems

Insertar caracteres
>> x=[x(1:3),'x',x(4:9)]
x=
proxblems

Cadena nula. Puede usar la notación [ ] o simplemente dos comillas seguidas:


>> x=’’;

Determinar si un carácter se encuentra en una cadena


>> x=’programa’;
>> e=ismember(‘r’,x)
e=
1

También se puede conocer su posición


>> [e,p]=ismember(‘r’,x)
e=
1
p=
2

Entrega la última posición si hay más de una coincidencia


>> x='programa';
>> [e,p]=ismember('a',x)
e=
1
p=
8
113

Examina la coincidencia y posición de cada carácter si hay más de uno


>> [e,p]=ismember('rta',x)
e=
1 0 1
p=
5 0 8

Determinar si una cadena se encuentra en otra cadena. El resultado es un vector con las
posiciones de coincidencia

>> x='En esta prueba para esta materia';


>> t='esta';
>> e=strfind(x,t)
e=
4 21
>> length(e)
ans =
2 Es la cantidad de coincidencias

Determinar si dos cadenas son idénticas: el resultado es un valor lógico


>> x='abc';
>> y='abc';
>> t=strcmp(x,y)
t=
1

Funciones para convertir entre numérico y cadena de caracteres


>> x=234;
>> c=num2str(x)
c
= 234

>> c=’345’;
>> n=str2num(c);
n
= 345

6.2 Listas de cadenas de caracteres

>> a=['abc';'rst';'xyz'] Las cadenas deben tener igual longitud


a=
abc
rst
xyz
>> a(2,:)
ans =
rst

>> a=char('abcd','rs','uwxyz','tx') La function char forma listas con cadenas


a= que pueden tener diferente longitud
abcd
rs
uwxyz
tx
>> [n,k]=size(a)
n=
4 Primer componente de size: cantidad de cadenas
k=
5 Segundo componente de size: la mayor longitud
114

NOTA: Para manejo de vectores de cadenas de caracteres de diferente longitud, es más


conveniente el uso de arreglos de celdas. Este tipo especial de datos se revisará en una
sección posterior.

Ejemplo. Salida de un título junto a un número. También puede usarse en input

for i=1:5
disp(['dato ', num2str(i)])
end

dato 1
dato 2
dato 3
dato 4
dato 5

Lectura de una cadena

x = input('Ingrese una cadena ');

El dato debe ser ingresado encerrado entre comillas simples o mediante una variable
previamente asignada con una cadena

Se pueden omitir las comillas al ingresar el dato si se incluye la especificando ‘s’ en input

x = input('Ingrese una cadena ', 's');

6.3 Algoritmos con cadenas de caracteres

Ejemplo. Leer una cadena de caracteres y mostrarla con los caracteres puestos en orden
inverso

x=input('ingrese una frase ');


n=length(x);
y= ''; % también puede iniciarla con [ ]
for i=1:n
y=[x(i),y]; % insertar carácter a la izquierda de la cadena
end
disp(y)

Salida

ingrese una frase esta es una prueba


abeurp anu se atse

Con el mismo programa se puede restaurar la frase original

>> invertir
ingrese una frase abeurp anu se atse
esta es una prueba
115

Ejemplo. Leer una cadena de texto y eliminar los espacios en blanco

Solución 1. El resultado se coloca en otra variable

x=input('ingrese frase ',’s’);


n=length(x);
y=[ ];
for i=1:n
if x(i)~=' '
y=[y,x(i)];
end
end
disp(y);

Solución 2. La misma cadena de entrada es modificada

x=input('ingrese frase ',’s’);


n=length(x);
i=0;
while i<length(x) % No se puede usar FOR debido a que la longitud
i=i+1; % cambia dinámicamente
if x(i)==' '
x(i)=[ ]; % Elimina el carácter. También se puede: x(i) = '';
i=i-1; % Reducir en 1 la longitud de la cadena
end
end
disp(x);

Ejemplo. Escribir un programa para determinar si una frase se puede leer de izquierda a
derecha o de derecha a izquierda. Estas frases se denominan “palíndromes”. El programa es
una combinación del algoritmo que elimina espacios en blanco y el algoritmo que invierte una
frase.

x=input('ingrese una frase ');


n=length(x);
y=[ ];
for i=1:n
if x(i)~=' '
y=[x(i),y];
end
end
e=strcmp(x,y);
if e==1
disp('si');
else
disp('no');
end

Ejemplos: radar, reconocer, la ruta nos aportó otro paso natural, damas oid a dios amad
116

Ejemplo. Leer una frase y determinar cuantas palabras contiene

x=input('ingrese frase ',’s’);


n=length(x);
c=1;
for i=1:n
if x(i)==' '
c=c+1;
end
end
disp([‘cantidad de palabras ’, num2str(c)]);

Ejemplo. Leer una frase y determinar cuántas veces contiene a una palabra

x=input('ingrese frase ',’s’);


p=input(‘ingrese palabra’,’s’);
e=strfind(x,p); %Vector conteniendo los inicios de coincidencias
n=length(e);
disp(n);

Ejemplo. Leer una frase y mostrarla enmascarada intercambiando parejas consecutivas de


caracteres

x=input('Ingrese mensaje ',’s’);


y='';
n=length(x);
for i=1:2:n-1
a=x(i);
b=x(i+1);
y=[y,b,a];
end
if mod(n,2)==1
y=[y,x(n)]; %si n es impar, agregar el último carácter
end
disp(y);

Salida

Ingrese mensaje esta es una prueba


seate snu arpeuab

Con el mismo programa se puede restaurar la frase original

Salida

Ingrese mensaje seate snu arpeuab


esta es una prueba
117

Ejemplo. Diseñe un esquema para enmascarar una frase colocando los caracteres
alternadamente alrededor del centro.

Codificar el mensaje

%Enmascara colocando caracteres alrededor del centro


x=input('Ingrese mensaje ','s');
y=[ ];
if mod(length(x),2)==1
x=[' ',x];
end
n=length(x);
for i=1:2:n
a=x(i);
b=x(i+1);
y=[b,y,a];
end
disp(y);

Decodificar el mensaje

%Decodifica el mensaje del algoritmo anterior


x=input('Ingrese mensaje ','s');
y=[ ];
n=length(x);
for i=1:n/2
a=x(n/2+i);
b=x(n/2-i+1);
y=[y,a,b];
end
disp(y);

Ejemplo. Lea nombres que pueden tener diferente longitud y forme una lista. Muestre por cada
nombre, la cantidad de veces que contiene la letra ‘a’

Note el uso de char para crear la lista de nombres de diferente longitud

%Lista vertical de nombres


n=input('cantidad de nombres ');
t=input('ingrese primer nombre ','s');
x=char(t); %inicia lista vertical
for i=1:n-1
t=input('ingrese siguiente nombre ','s');
x=char(x, t); % char crea una lista vertical
end % con los siguientes n-1 nombres
for i=1:n
v=strfind(x(i,:),'a'); % vector de posiciones de coincidencias de 'a' en x
c=length(v);
disp([i, c]);
end
118

Ejemplo. Lea una lista de nombre, elimine los nombres con 'r'

t=input('ingrese lista ');


i=1;
while i<size(t,1) %El primer componente de size es la longitud de la lista
if ismember('r',t(i,:))==1
t(i,:)='';
end
i=i+1;
end
disp(t)

Salida

>> t=char('maria','juan','pedro','luis')
t=
maria
juan
pedro
luis

>> prueba
ingrese lista t
juan
luis

También podría gustarte