How to change a matrix as inserting zeroes both end sides?

1 visualización (últimos 30 días)
HOEMIN
HOEMIN el 18 de Nov. de 2013
Comentada: Simon el 19 de Nov. de 2013
I wanna make 'Az2' matrix 'Az' in the picture.
This is my code for doing that,
for o=2:1:zmax-1;
Az(o,o-1:o+1)=Az2(o,1:3);
end
however, it's way slow... Can I have any other better coding for that as using vectorization? help me...

Respuesta aceptada

Sean de Wolski
Sean de Wolski el 18 de Nov. de 2013
Editada: Sean de Wolski el 18 de Nov. de 2013
There's a gallery for that!
az = rand(10,3);
Az2 = full(gallery('tridiag',az(2:end,1),az(:,2),az(1:end-1,3)))
And
doc gallery
  2 comentarios
HOEMIN
HOEMIN el 19 de Nov. de 2013
Unbeilvable! Thanks alot. you are my life saver!
Simon
Simon el 19 de Nov. de 2013
Hi!
But in this case Az2 is a square matrix. As I understood this was not desired?!?

Iniciar sesión para comentar.

Más respuestas (1)

Simon
Simon el 18 de Nov. de 2013
  3 comentarios
Simon
Simon el 18 de Nov. de 2013
Hi!
It doesn't matter!
% diagonal elements
Az2 = rand(10, 3);
% diagonal 1
A1 = diag(Az2(:, 1));
A1 = [A1, zeros(size(A1, 1), 2)];
% diagonal 2
A2 = diag(Az2(:, 2), 1);
A2(end, :) = [];
A2 = [A2, zeros(size(A2, 1), 1)];
% diagonal 3
A3 = diag(Az2(:, 2), 2);
A3(end-1:end, :) = [];
% combine matrices
Az = A1 + A2 + A3;
% row with zeros in front
Az = [zeros(1, size(Az, 2)); Az];
HOEMIN
HOEMIN el 19 de Nov. de 2013
amazing! Thanks alot. you are my life saver!

Iniciar sesión para comentar.

Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by