Grouping an Array with respect to certain elements

8 ビュー (過去 30 日間)
Erdem Tuna
Erdem Tuna 2020 年 3 月 15 日
コメント済み: Erdem Tuna 2020 年 3 月 15 日
Hello,
I have an (Nx5) matrix. Each row corresponds to a struct of data. Data identifiers reside in the first and the second columns of matrix, columns 1 and 2.
A sample matrix:
% srcPort | destPort | send | receive | time
% -------------------------------------------
% 23 | 9212 | 41 | 55 | 202912.0
% 551 | 10563 | 0 | 0 | 55125.0
% 23 | 9212 | 921 | 1020 | 802912.0
% 98 | 5612 | 39 | 24 | 902912.0
I want to be able to group these data w.r.t columns 1 and 2; later want to plot 'time vs send' of each groupped data. Plotting is OK, but I am stuck on determining way to group those data?
  4 件のコメント
Sriram Tadavarty
Sriram Tadavarty 2020 年 3 月 15 日
Hi Erdem,
As i get you, you have an Nx5 matrix, then you wanted to group the first two columns into a separate matrix. So, if the matrix is A (N x 5), then if you define B = A(:,[1 2]); then you will get all the indentifiers in B (N x 2). Is this the same you intended?
Erdem Tuna
Erdem Tuna 2020 年 3 月 15 日
Hello,
Indeed I want to group the rows having the same srcPort and dstPort elements, i.e. having same first and second column values.

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

採用された回答

Ameer Hamza
Ameer Hamza 2020 年 3 月 15 日
編集済み: Ameer Hamza 2020 年 3 月 15 日
Try this
data = [23 9212 41 55 202912.0;
551 10563 0 0 55125.0;
23 9212 921 1020 802912.0;
98 5612 39 24 902912.0];
[~,~,ic] = unique(data(:,[1 2]), 'rows');
seperated_data = arrayfun(@(x) data(ic==x,:), unique(ic), 'UniformOutput', 0);
Each element of cell array have same value in column 1 and 2
seperated_data{1}
seperated_data{2}
seperated_data{3}
  1 件のコメント
Erdem Tuna
Erdem Tuna 2020 年 3 月 15 日
Thank you Ameer.

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

製品


リリース

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by