How to make a new matrix from find function results of different size

조회 수: 2 (최근 30일)
I have a matrix of IC 2008x1 that has values from 1 to 16 (some in between number might be missing) and I want to create a matrix that each column has the rows of the original matrix that correspond to each value 1 to 16 eg original matrix 4; 1; 3; 2; 5; 6; 4; new matrix [2] [4] [3] [1;7] [5] [6]
I try to do this like this for j=1:B
k=find(IC==j);
F(:,j)=k;
end where B is 16 but it says that Subscripted assignment dimension mismatch. Do you know an alternative that works regaldless of this mismatch?

채택된 답변

Ameer Hamza
Ameer Hamza 2018년 6월 22일
In a normal array, all rows and columns must have equal length. You need to use a cell array
for j=1:B
k=find(IC==j);
F{j}=k;
end
  댓글 수: 7
Georgios Tertikas
Georgios Tertikas 2018년 6월 24일
now its says undefined variable or function newline
Ameer Hamza
Ameer Hamza 2018년 6월 24일
You must be using R2016a or earlier. It that case, change the line like this
printf(f, [repmat('%f ', 1, numel(F{i})), 10], F{i});

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 String Parsing에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by