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

1 回表示 (過去 30 日間)
HOEMIN
HOEMIN 2013 年 11 月 18 日
コメント済み: Simon 2013 年 11 月 19 日
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...

採用された回答

Sean de Wolski
Sean de Wolski 2013 年 11 月 18 日
編集済み: Sean de Wolski 2013 年 11 月 18 日
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 件のコメント
HOEMIN
HOEMIN 2013 年 11 月 19 日
Unbeilvable! Thanks alot. you are my life saver!
Simon
Simon 2013 年 11 月 19 日
Hi!
But in this case Az2 is a square matrix. As I understood this was not desired?!?

サインインしてコメントする。

その他の回答 (1 件)

Simon
Simon 2013 年 11 月 18 日
  3 件のコメント
Simon
Simon 2013 年 11 月 18 日
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 2013 年 11 月 19 日
amazing! Thanks alot. you are my life saver!

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by