Matlab - resta consecutiva de vectores

   
Vista:

resta consecutiva de vectores

Publicado por luis (1 intervención) el 24/06/2015 02:35:06
hola, que tal tengo una consulta
digamos que tengo un vector [16 1 15] y lo quiero restar con un vector [6 2], pero de tal forma que se repita el 6,2 hasta terminar de restar toda la matriz,es decir,
[16 1 15]-[6 2 6]
o si tengo [5 8 9 4 2] y [2 3 6]
seria [5 8 9 4 2]-[2 3 6 2 3]
y se debe tener en cuenta que el vector tiene una cantidad de elementos "x" al igual que el otro vector, no necesariamente el mismo valor
espero que puedan aclarar esta duda
gracias
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 Royeth

resta consecutiva de vectores

Publicado por Royeth jesus.royeth@gmail.com (749 intervenciones) el 24/06/2015 03:25:41
1
2
3
4
5
a=[16 1 15];
b=[6 2];
c=repmat(b,1,ceil(length(a)/length(b)));
d=a-c(1:length(a));
disp(d)

Saludos
https://www.facebook.com/royethmatlab
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
Imágen de perfil de JOSE JEREMIAS CABALLERO

resta consecutiva de vectores

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3433 intervenciones) el 24/06/2015 06:25:37
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
clear all
X=round(10*rand(1,round(50*rand+1)))
x=length(X);
 
Y=round(10*rand(1,round(10*rand+2)))
y=length(Y);
 
while y<=x
    Y=[Y, Y];
    y=length(Y);
end
 
display(X)
Y=Y(1:x);
display(Y)
R=X-Y


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
26
27
28
29
30
31
32
33
34
35
36
37
>> vector
X =
     6     1     9     6     1     7     4     1     2     2     2     7     8     5     6     6    10     6     6     9     6     3
 
Y =
     4     6     7     7     2     1     3     9     6     5     4     8
 
Y =
     4     6     7     7     2     1     3     9     6     5     4     8     4     6     7     7     2     1     3     9     6     5
 
R =
     2    -5     2    -1    -1     6     1    -8    -4    -3    -2    -1     4    -1    -1    -1     8     5     3     0     0    -2
 
>> vector
 
X =
  Columns 1 through 24
     7     2     4     5     4     5     3     8     4     7     5     7     9     5     9     2     9     1     5     0     8     2     2     2
  Columns 25 through 34
     7     2     3     8     5     9     1     4     6     6
 
Y =
     1     3     0    10     8     8     1     3     2     5
 
Y=
  Columns 1 through 24
     1     3     0    10     8     8     1     3     2     5     1     3     0    10     8     8     1     3     2     5     1     3     0    10
 
  Columns 25 through 34
     8     8     1     3     2     5     1     3     0    10
 
 
R =
  Columns 1 through 24
     6    -1     4    -5    -4    -3     2     5     2     2     4     4     9    -5     1    -6     8    -2     3    -5     7    -1     2    -8
  Columns 25 through 34
    -1    -6     2     5     3     4     0     1     6    -4



Saludos
JOSE JEREMÍAS CABALLERO
Asesoría online en Matlab
Servicios de programación matlab
jjcc94@hotmail.com
skype: josejeremiascaballero
Estimado Usuario, el correo es para servicios de cursos, asesoría y programación. Toda ayuda gratuita es vía foro
.


http://matlabcaballero.blogspot.com
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
Imágen de perfil de Dave

resta consecutiva de vectores

Publicado por Dave correa.dave30@gmail.com (934 intervenciones) el 24/06/2015 07:56:47
Hola Luis;

Por cuestión de una mejor presentación te recomiendo que crees una función para hacer el procedimiento de igualar los tamaños de los vectores y luego realices la operación de resta.

Te dejo el código propuesto anteriormente en una versión de función

Espero ser de alguna ayuda:

Saludos
Dave Correa
correa.dave30@gmail.com
dcorrea@fismatlab.org
Servicios de Programación Matlab
http://fismatlab.org
http://fismatlab.blogspot.com


1
2
3
4
5
6
7
8
9
clear all, clc
a=[16 1 15];
 
b=[6 2];
 
c = new_vector(a,b);
 
d = a - c;
disp(d)

y la función "new_vector.m"

1
2
3
4
5
function c = new_vector(a,b)
 
tmp=repmat(b,1,ceil(length(a)/length(b)));
 
c = tmp(1:length(a));
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