Sorting and Saving a subset from the array

Hi there,
I have imported data from Excel and now have a 240X3 cell array called 'num'.
Once sorted it looks something like this:
16 1232 56
16 3455 56
16 5443 76
16 1232 88
17 4545 65
17 3432 87
All I want to do is for to write a for loop to select all rows of the data which start with 16's and then save it as another array say num_1, then take another chunk that starts with 17's and save it as num_2..etc.
How can I compose a for loop to take care of that. I have tried different measures based on other questions here in matlab central but to no avail.
Any help will be appreciated.
Sincerely yours; Nj

回答 (2 件)

Walter Roberson
Walter Roberson 2012 年 12 月 29 日

0 投票

unum = unique(num(:,1));
for K = 1 : length(unum)
these_num = num(num == unum(K), :);
num_{K} = these_num;
end
This will create num_{1}, num_{2} and so on. Creating actual new variables is not a good idea; see http://matlab.wikia.com/wiki/FAQ#How_can_I_create_variables_A1.2C_A2.2C....2CA10_in_a_loop.3F

1 件のコメント

Niraj Poudel
Niraj Poudel 2012 年 12 月 29 日
Hi Walter, Thank you for your prompt response. However when I run the code you just sent me, it keeps telling me that the index exceeds matrix dimensions, plus I do not see anywhere in the code where I can specify the rows starting with 16 and 17 and so forth?
Am I missing something? Any help will be appreciated. Nj

サインインしてコメントする。

Andrei Bobrov
Andrei Bobrov 2012 年 12 月 29 日
編集済み: Andrei Bobrov 2012 年 12 月 29 日

0 投票

a0 = {16 1232 56
16 3455 56
16 5443 76
16 1232 88
17 4545 65
17 3432 87};
a = cell2mat(a0);
[b,~,c] = unique(a(a(:,1)>=16,1));
num = ...
[num2cell(b),cellfun(@(x)a(x,2:3),accumarray(c,(1:numel(c))',[],@(x){x}),'un',0)];

2 件のコメント

Niraj Poudel
Niraj Poudel 2012 年 12 月 29 日
For some reason this does not work either. In this code there does not seem anywhere that rows starting with 16 should be saved as a different array? And 17 and 18 and so forth? I might be wrong. please correct me if I am so. Thank you for your response.
Andrei Bobrov
Andrei Bobrov 2012 年 12 月 29 日
corrected

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeMatrix Indexing についてさらに検索

製品

質問済み:

2012 年 12 月 29 日

Community Treasure Hunt

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

Start Hunting!

Translated by