Combining sub-matrices diagonally within a for loop
1 回表示 (過去 30 日間)
古いコメントを表示
clear all;
clc;
close all;
n=[3 1 2];
for kk=1:length(n)
matrix=zeros(n(kk),n(kk));
for ii=1:n(kk)
for jj=1:n(kk)
val=2*ii+jj;
matrix(ii,jj)=val;
end
end
end
% Dear users, if you put a debug at the very last "end" (row 13), you can
% see that I aim to generate 3 sub-matrices having the size of 3x3, 1x1 and
% 2x2 (see n=[3 1 2]). I want to combine each sub-matrix one each other diagonally.
% I want to get the matrix as a result below:
matrix=[3 4 5 0 0 0;5 6 7 0 0 0;7 8 9 0 0 0;0 0 0 3 0 0;0 0 0 0 3 4;0 0 0 0 5 6];
%Is there any simple way to do it?
%Thanks in advance!
0 件のコメント
採用された回答
Bruno Luong
2019 年 8 月 13 日
submats = arrayfun(@(n) 2*(1:n)'+(1:n),[3 1 2],'unif',0)
matrix = blkdiag(submats{:})
4 件のコメント
Bruno Luong
2019 年 8 月 13 日
I actually wait to see what do you learn and how you manage to adatp the above code to this tiny change.
その他の回答 (1 件)
Rengin
2019 年 8 月 13 日
2 件のコメント
Bruno Luong
2019 年 8 月 13 日
編集済み: Bruno Luong
2019 年 8 月 13 日
n=[3 1 2];
rad=[0.04 0.02 0.01];
h=[10 12 15];
submats = arrayfun(@(n,r,h) r*h*ones(n),n,rad,h,'unif',0);
...
参考
カテゴリ
Help Center および File Exchange で Matrices and Arrays についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!