Matlab - Concatenar

   
Vista:

Concatenar

Publicado por Ines_v (1 intervención) el 27/09/2015 18:56:39
Hola!! soy nueva con matlab y tengo una pequeña duda:

Teniendo lo siguiente:

a=[1; 2; 3]; %columna de 3 numeros

He creado una matriz cuadrada de ceros:

a=zeros(3,5);

Lo que pretendo es hacer lo siguiente:

1 0 0
2 1 0
3 2 1
0 3 2
0 0 3

Hay alguna función en matlab que permita concatenar y reemplazar?
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

Concatenar

Publicado por Royeth jesus.royeth@gmail.com (758 intervenciones) el 27/09/2015 19:29:51
de esa manera no pero puedes implementar una función recursiva ,

1
2
3
4
5
6
7
8
9
a=[1; 2; 3; 4; 5]; %columna de n numeros
b=zeros(2*numel(a)-1);
for k=1:numel(a)
    b2=diag(repmat(a(k),1,numel(a)),-k+1);
    b2(2*numel(a)-1,2*numel(a)-1)=0;
    b=b+b2;
end
b=b(:,1:numel(a));
disp(b)

ejecución:

1
2
3
4
5
6
7
8
9
1     0     0     0     0
     2     1     0     0     0
     3     2     1     0     0
     4     3     2     1     0
     5     4     3     2     1
     0     5     4     3     2
     0     0     5     4     3
     0     0     0     5     4
     0     0     0     0     5


si a es a=[1; 2; 3];

1
2
3
4
5
1     0     0
     2     1     0
     3     2     1
     0     3     2
     0     0     3



y aquì està en modo funciòn

1
2
3
4
5
6
7
8
9
function b=nombredelafuncion(a)
b=zeros(2*numel(a)-1);
for k=1:numel(a)
    b2=diag(repmat(a(k),1,numel(a)),-k+1);
    b2(2*numel(a)-1,2*numel(a)-1)=0;
    b=b+b2;
end
b=b(:,1:numel(a));
end


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

Concatenar

Publicado por Miguel González (31 intervenciones) el 01/10/2015 01:20:54
Hola Ines otra opción :


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
% Program matriz
 
clear all
A = [1; 2; 3; 4; 5; 6; 7]; % Definr vector
n = numel(A);
B(1:n) = A(n:-1:1); % 3,2,1,.. 
M = zeros(2*n-1,n); % generando la matriz 
 
j = n;
for i = 1:n
 
    M(i,1:i) = B(j:n);
    M(j+n-1,j:n) = A(n:-1:j);
    j = j - 1;
 
end
 
disp(M)



Saludos
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

Concatenar

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3439 intervenciones) el 06/10/2015 00:13:43
1
2
3
4
5
6
7
8
clear all
n=7;
for k=1:n
    for  i=1:n
          M(i+k-1,k)=i;
    end
end
M


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
>> matriz_tridiagonal
M =
     1     0     0     0     0     0     0
     2     1     0     0     0     0     0
     3     2     1     0     0     0     0
     4     3     2     1     0     0     0
     5     4     3     2     1     0     0
     6     5     4     3     2     1     0
     7     6     5     4     3     2     1
     0     7     6     5     4     3     2
     0     0     7     6     5     4     3
     0     0     0     7     6     5     4
     0     0     0     0     7     6     5
     0     0     0     0     0     7     6
     0     0     0     0     0     0     7



Saludos
JOSE JEREMÍAS CABALLERO
Asesoría online en Matlab
Servicios de programación matlab
jjcc94@hotmail.com
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