Create a matrix of this type?
1 回表示 (過去 30 日間)
古いコメントを表示
Hello,
I want to make a matrix this type
1 0 0 0 0 0
2 0 0 0 0 0
3 4 0 0 0 0
5 6 0 0 0 0
7 8 9 0 0 0
10 11 12 0 0 0
13 14 15 16 0 0
17 18 19 20 0 0
% Alternate rows have same number of element
%Each element of the matrix is 1 larger than previous one
How to achieve it ?
0 件のコメント
採用された回答
Andrei Bobrov
2019 年 1 月 20 日
m = 8;
n = 6;
P = kron(triu(ones(n,m/2)),[1,1]);
P(P>0) = 1:nnz(P);
out = P';
3 件のコメント
Andrei Bobrov
2019 年 1 月 21 日
編集済み: Andrei Bobrov
2019 年 1 月 21 日
m = 6;
n = 6;
lo = triu(~rem((1:n)' + (1:m),2));
out = int64(lo);
out(lo) = 1:nnz(lo);
out = out';
with kron
m = 6;
n = 6;
out = triu(kron(ones(ceil(n/2),ceil(m/2)),[1,0;0,1]));
out = out(1:n,1:m);
out(out~=0) = 1:nnz(out);
out = out';
その他の回答 (1 件)
madhan ravi
2019 年 1 月 20 日
編集済み: madhan ravi
2019 年 1 月 20 日
n=6; % number of elements in a row
B=mat2cell((1:20).',repelem(1:4,2));
B=cellfun( @transpose,B,'un',0);
R=cellfun( @(x) [x zeros(1,6-numel(x))],B,'un',0);
vertcat(R{:})
参考
カテゴリ
Help Center および File Exchange で Resizing and Reshaping Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!