How to split divide an array on specific sections?

조회 수: 15 (최근 30일)
Jorge Rodriguez
Jorge Rodriguez 2017년 8월 16일
댓글: Jorge Rodriguez 2017년 8월 17일
I have a double array of dimension (10000,5), the first column of the array is an ID going from 1-10. The other 4 columns are the related data. I'm trying to create individual arrays based on each ID value and the quantity of each ID can vary with respect to each other.
%For example:
%CA is the vector with the data =(ID,DATA1,DATA2,DATA3,DATA4)
%ID goes from 1-10
%The first array should be GC1=(1,DATA1,DATA2,DATA3,DATA4) with "x" number of rows
%I have tried to make this code work but I don't know what's wrong? I have a loop to create 11 array GC(id), although i now is not recommended.
k =size(ID,1); %size of vector, size of data base
x=0;
jl=1;
CAA=zeros(k,1);
CAA=CA(:,1); %extraction of the ID column from CA
for id=1:10
for i=jl:k
if CAA(i,1)==1
x=x+1;
else
GC(id)=zeros(x,5);
GC(id)=CAA(jl:x,5);
end
end
end

채택된 답변

Sebastian Castro
Sebastian Castro 2017년 8월 16일
편집: Sebastian Castro 2017년 8월 16일
You can do this with logical indexing. Say, for example, you want to grab the data whose ID corresponds to 5:
% Generate dummy data
% First column is a random number 1-10
data = [randi(10,100,1) rand(100,4)];
% Extract the data from those with ID #5
subset5 = data(data(:,1)==5,:);
- Sebastian
  댓글 수: 3
Jorge Rodriguez
Jorge Rodriguez 2017년 8월 16일
Sebastian, do you know id there is a way to create the vector subset in a loop. In other words subset(i)? this is just in case the ID varies from more than 1 to 10? Thanks
Sebastian Castro
Sebastian Castro 2017년 8월 16일
Andrei's answer below is the way to go!

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

추가 답변 (1개)

Andrei Bobrov
Andrei Bobrov 2017년 8월 16일
GC = accumarray(data(:,1),(1:size(data,1))',[],@(x){data(x,:)});
  댓글 수: 1
Jorge Rodriguez
Jorge Rodriguez 2017년 8월 17일
Thanks Andrei, it works perfectly for what i wanted

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

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by