Shifting columns in matrix Matlab

3 ビュー (過去 30 日間)
Afluo Raoual
Afluo Raoual 2021 年 2 月 12 日
編集済み: Afluo Raoual 2021 年 3 月 16 日
Dear members,
I have a matrix in which its tril and triu are zeros
And I want to shift up its rows
How can I program it in Matlab please?
  3 件のコメント
the cyclist
the cyclist 2021 年 2 月 12 日
What is in the matrix locations that are "empty" in your top image of H. (An element of a numeric array cannot be empty.)
Can you upload the matrix H in a MAT file?
Afluo Raoual
Afluo Raoual 2021 年 2 月 12 日
@the cyclist The empty elements are replaced all by zero elements

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

採用された回答

the cyclist
the cyclist 2021 年 2 月 13 日
編集済み: the cyclist 2021 年 2 月 13 日
Slightly simpler version of @Nora Khaled's idea. It will also generalize to an (N-1) X N array in a way that I believe makes sense, in case that is important.
[~,c] = size(H);
r = c/2;
M = zeros(r,c);
for i=2:2:c
j = i/2;
M(:,i-1:i) = H(j:j+r-1,i-1:i);
end
You don't really need to define r or j as a separate variable, but I think it is a bit clearer.
Also, if you did need this for large arrays, it is more memory-efficient to preallocate M as I did, rather than building it by continually appending.
  1 件のコメント
Afluo Raoual
Afluo Raoual 2021 年 2 月 13 日
Thank you so much. It works

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

その他の回答 (1 件)

Nora Khaled
Nora Khaled 2021 年 2 月 12 日
clear all;
clc
H=[0 0 0 0 0 0 0 0 0 0
0 1 1 1 0 0 0 0 0 0
1 1 1 0 0 1 0 0 0 0
1 0 0 1 1 0 0 1 0 0
1 1 0 0 1 1 1 0 0 1
0 0 1 1 1 0 1 1 1 0
0 0 0 0 0 1 0 0 1 1
0 0 0 0 0 0 1 1 0 0
0 0 0 0 0 0 0 0 1 1];
[~,c]=size(H);
j=0;
M=[];
for i=1:2:c
j=j+1;
M=[M H(j:j+4,i:i+1)];
end
  1 件のコメント
Afluo Raoual
Afluo Raoual 2021 年 2 月 13 日
Thank you so much. It works

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

カテゴリ

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