Allocating first and last rows from column 2 that correspond to specific criteria in column 1 in a for loop to a new matrix or submatrix

1 次查看(过去 30 天)
I have a binary matrix consisting of 10100 x 15 elements where elements==1 are grouped in n sequential rows per column and their index differs in each column. For example
X =
1 0 0 0
1 1 1 0
1 1 1 1
0 1 1 1
0 0 0 1
What I aim to do, is to replace the 10100 rows per each column with the the first and last indeces of value==1. Thus in each column I should only have 2 rows representing the indeces of interest.The final output should be a matrix that looks something like that:
Index_X=
1 2 2 3
3 4 4 5
Please let me know if there is a neat way to obtain the indeces of rows/col of the main matrix X. This is the code I'm currently using and it is not giving me what I want:
for j=1:15; %15 is the total number of columns in the original matrix
%....code to obtain X matrix 10100x15
[row col]=find(ismember(X,1));
concatenate_colrow=cat(2,col,row); % this yields indeces of columns ==1 in original matrrix in (:,1) and indeces or adjacent rows in (:,2)
%.....should I do something here to obtain the rows indeces==1 and placing as in example above?????
end
Thank you

采纳的回答

Stephen23
Stephen23 2020-7-13
编辑:Stephen23 2020-7-13
X = [1,0,0,0;1,1,1,0;1,1,1,1;0,1,1,1;0,0,0,1];
N = size(X,2);
Y = nan(2,N);
for k = 1:N
V = find(X(:,k));
Y(:,k) = V([1,end]);
end
giving
Y =
1 2 2 3
3 4 4 5
  4 个评论
Lina Koronfel
Lina Koronfel 2020-7-13
Oh sorry that was a typo while copying. However, I realized what the issue is. The first 2/15 columns are lacking value==1. Thus the find function yielded an empty array that could't be processed by the following line Ywhatever(:,k)=LED_rowcol_index([1,end]);.
I changed the for loop to start from 3 instead of 1 and now it is working.
for k =3:BinarySize
LED_rowcol_index=find(X:,k));
Ywhatever(:,k)=LED_rowcol_index([1,end]);
end

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by