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 个评论
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