How to split array into sub arrays?

9 ビュー (過去 30 日間)
benghenia aek
benghenia aek 2024 年 1 月 30 日
編集済み: Matt J 2024 年 2 月 19 日
how to split principal vector "a" into sub vectors a1, a2, a3 and a4
exemple:
a=[1 3 5 8 11 12 15 17 18 19 20 21 24 29 31 32 33 34 35 36 38 39];
a1=[1 3 5 8];
a2=[11 12 15 17 18 19 20];
a3=[21 24 29];
a4=[31 32 33 34 35 36 38 39];
thnkx
  3 件のコメント
benghenia aek
benghenia aek 2024 年 1 月 30 日
I want to split the big array "a" into:
a1 "the numbers between 0 and 10"
a2 "the numbers between 11 and 20"
a3 "the numbers between 21 and 30"
and make it into cell arrays
Dyuman Joshi
Dyuman Joshi 2024 年 2 月 19 日
Any updates, @benghenia aek?

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

採用された回答

Dyuman Joshi
Dyuman Joshi 2024 年 1 月 30 日
編集済み: Dyuman Joshi 2024 年 2 月 19 日
a = [1 3 5 8 11 12 15 17 18 19 20 21 24 29 31 32 33 34 35 36 38 39 69].';
%bin the data into groups of 10
k = findgroups(floor((a-1)/10));
z = accumarray(k, a, [], @(x) {x.'})
z = 5×1 cell array
{[ 1 3 5 8]} {[ 11 12 15 17 18 19 20]} {[ 21 24 29]} {[31 32 33 34 35 36 38 39]} {[ 69]}

その他の回答 (1 件)

Matt J
Matt J 2024 年 1 月 30 日
編集済み: Matt J 2024 年 2 月 19 日
a = [1 3 5 8 11 12 15 17 18 19 20 21 24 29 31 32 33 34 35 36 38 39];
G=findgroups(discretize(a,[0:10:max(a)+10],'Include','right'));
z=splitapply(@(x){x}, a, G)
z = 1x4 cell array
{[1 3 5 8]} {[11 12 15 17 18 19 20]} {[21 24 29]} {[31 32 33 34 35 36 38 39]}
  2 件のコメント
Dyuman Joshi
Dyuman Joshi 2024 年 2 月 19 日
splitapply() won't work if there is a gap in the data -
a = [1 3 5 8 11 12 15 17 18 19 20 21 24 29 31 32 33 34 35 36 38 39 69];
G=discretize(a,[0:10:max(a)+10],'Include','right');
z=splitapply(@(x){x}, a, G)
Error using splitapply
For N groups, every integer between 1 and N must occur at least once in the vector of group numbers.
Matt J
Matt J 2024 年 2 月 19 日
Small modification,
a = [1 3 5 8 11 12 15 17 18 19 20 21 24 29 31 32 33 34 35 36 38 39 69];
G=findgroups(discretize(a,[0:10:max(a)+10],'Include','right'));
z=splitapply(@(x){x}, a, G)
z = 1x5 cell array
{[1 3 5 8]} {[11 12 15 17 18 19 20]} {[21 24 29]} {[31 32 33 34 35 36 38 39]} {[69]}

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

カテゴリ

Help Center および File ExchangeOperators and Elementary Operations についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by