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

Stephen23
Stephen23 2024년 1월 30일
편집: Stephen23 2024년 1월 30일
What is the rule for splitting into those vectors?
For example:
  • why is 20 in a2 and not in a3 ?
  • why is 21 in a3 and not in a2 ?
Note that creating numbered variables is not a good approach. Much better to use a cell array.
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일

0 개 추천

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일

0 개 추천

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

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.
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]}

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

카테고리

도움말 센터File Exchange에서 Operators and Elementary Operations에 대해 자세히 알아보기

질문:

2024년 1월 30일

편집:

2024년 2월 19일

Community Treasure Hunt

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

Start Hunting!

Translated by