Shifting columns in matrix Matlab

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 comentarios

Walter Roberson
Walter Roberson el 12 de Feb. de 2021
Probably adding transposed tril and triu
the cyclist
the cyclist el 12 de Feb. de 2021
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 el 12 de Feb. de 2021
@the cyclist The empty elements are replaced all by zero elements

Iniciar sesión para comentar.

 Respuesta aceptada

the cyclist
the cyclist el 13 de Feb. de 2021
Editada: the cyclist el 13 de Feb. de 2021
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.

Más respuestas (1)

Nora Khaled
Nora Khaled el 12 de Feb. de 2021
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

Categorías

Etiquetas

Preguntada:

el 12 de Feb. de 2021

Editada:

el 16 de Mzo. de 2021

Community Treasure Hunt

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

Start Hunting!

Translated by