Extract first and last row of each subarray in a cell array
    조회 수: 9 (최근 30일)
  
       이전 댓글 표시
    
Hello, if I have a 7×1 cell array, how could I extract the first and last row of each sub-array.
So if my cell looks like this:

I would like to end up with a matrix that looks like this (I put spaces so it is more clear what I want from each sub-array) :
   50.0000   30.0000
   50.4897   31.9177
   61.0370   51.2245
   61.5267   53.1422
   61.5267   65.1422
   60.6073   66.8252
   58.5037   67.4803
   54.2273   68.6080
   52.1029   69.2125
   51.0000   71.0000
I included the 7x1 cell array file.
Thanks.
댓글 수: 0
채택된 답변
  Paul
      
      
 2023년 4월 10일
        
      편집: Paul
      
      
 2023년 4월 10일
  
      I think this works even if the first and last row of a cell are identical.
load(websave('cellArray.mat','https://www.mathworks.com/matlabcentral/answers/uploaded_files/1350539/cellArray.mat'));
out = cellfun(@(x) x(1:max(end-1,1):end,:),group1,'UniformOutput',false)
out = vertcat(out{:})
댓글 수: 1
  Walter Roberson
      
      
 2023년 4월 10일
				By the way, @Paul the websave() work-around is no longer generally needed. If you use the attachment toolbar icon, then the second tab, "Link from this thread" allows you to select items that other people have attached in the Question, a makes them available for the Run facility (without duplicating them -- it makes links internally.)
추가 답변 (2개)
  Walter Roberson
      
      
 2023년 4월 10일
        output = cellfun(@(C) C(unique([1, end]), :), YourCellArray, 'uniform', 0)
The unique() is there to prevent it from accidentally copying data when there happens to be only one row in a cell
댓글 수: 0
  the cyclist
      
      
 2023년 4월 10일
        I believe this does what you want.
load cellArray.mat
c = cellfun(@(x)unique(x([1 end],:),"row"),group1,"UniformOutput",false);
m = cell2mat(c)
The cells that have one row make this a bit tricky. The first and last row of a one-row are the same, but it looks like you don't want it listed twice. So, I use "unique" to get only one of them. But, this algorithm will fail if the first and last row of a multi-row array are identical.
댓글 수: 0
참고 항목
카테고리
				Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!