how to shift trapped zeros to the bottom keeping leading zeros in given matrix fixed?

1 次查看(过去 30 天)
Hi all, I have a problem while finding the probablity transition matrix. The code I have written to find the transition matrix calculate the transition probability matrices of each columns (in the given matrix below) but it excludes the transition between two states if zeros are trapped like
1
0
2 (shown below in bold) So, I wanted shift the trapped zeros to last.
I encountered trapped zeros in the matrix for instance, a matrix like
A = [0 0 0 1 0 2 3 1 2 3 0 0 0;
1 2 2 1 1 2 3 1 2 3 1 3 4;
0 1 0 1 0 0 0 1 2 1 1 2 2;
2 1 2 1 0 0 0 0 1 1 1 1 1;
1 0 0 1 1 1 1 1 2 2 2 1 1]
Now, I want to change this matrix into new matrix like
new_A =[0 0 0 1 0 2 3 1 2 3 0 0 0;
1 2 2 1 1 2 3 1 2 3 1 3 4;
2 1 2 1 1 1 1 1 2 1 1 2 2;
1 1 0 1 0 0 0 1 1 1 1 1 1;
0 0 0 1 0 0 0 0 2 2 2 1 1]
shifting all trapped zeros to the bottom of each column. Any help will be greatly appreciated.

采纳的回答

Matt J
Matt J 2022-3-21
编辑:Matt J 2022-3-21
A=[ 0 0 0 1 0 2 3 1 2 3 0 0 0
1 2 2 1 1 2 3 1 2 3 1 3 4
0 1 0 1 0 0 0 1 2 1 1 2 2
2 1 2 1 0 0 0 0 1 1 1 1 1
1 0 0 1 1 1 1 1 2 2 2 1 1];
B=A>0;
C=cummax(B,1);
D=double(B);
D(C&A==0)=inf;
D=sort(D,1);
D=D~=0 & ~isinf(D);
Anew=zeros(size(A));
Anew(D)=A(A~=0)
Anew = 5×13
0 0 0 1 0 2 3 1 2 3 0 0 0 1 2 2 1 1 2 3 1 2 3 1 3 4 2 1 2 1 1 1 1 1 2 1 1 2 2 1 1 0 1 0 0 0 1 1 1 1 1 1 0 0 0 1 0 0 0 0 2 2 2 1 1
  3 个评论
Matt J
Matt J 2022-3-21
编辑:Matt J 2022-3-21
It should work for any matrix and for any number of leading zeros, but you should definitely test these use cases if you have any doubts.

请先登录,再进行评论。

更多回答(1 个)

Arif Hoq
Arif Hoq 2022-3-21
if your matrix A almost same dimension( 5 X 13) everytime, then
A = [0 0 0 1 0 2 3 1 2 3 0 0 0;
1 2 2 1 1 2 3 1 2 3 1 3 4;
0 1 0 1 0 0 0 1 2 1 1 2 2;
2 1 2 1 0 0 0 0 1 1 1 1 1;
1 0 0 1 1 1 1 1 2 2 2 1 1];
B=A(:,1);
C=B(2:end);
C([2 end])=C([end 2]);
D=[B(1);C];
output=[D A(:,2:end)]
output = 5×13
0 0 0 1 0 2 3 1 2 3 0 0 0 1 2 2 1 1 2 3 1 2 3 1 3 4 1 1 0 1 0 0 0 1 2 1 1 2 2 2 1 2 1 0 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 2 2 2 1 1
  4 个评论
Sushil Pokharel
Sushil Pokharel 2022-3-21
Actually, I want to move the trapped zeros in every column keeping all other elements fixed. 'descend' will shift '2' at the top. Also, this is the example of the matrix where we know the position of the zeros. But what is we don't know the position of zero. So I think if we can write a code in such a way that when ever it finds a zero it will shift that zeros to the bottom. I think previous one will work only when we know about the position of zeros. 'descend' will alter the position of other states like 2 3 4.
Sushil Pokharel
Sushil Pokharel 2022-3-22
Dear Arif Hoq,
Thank you so much for your time. I really appreciate your help and for your immediate response.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Vehicle Network Toolbox 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by