How to select or group sections of an array without using indexing

1 回表示 (過去 30 日間)
Femi Bolarinwa
Femi Bolarinwa 2020 年 10 月 19 日
コメント済み: Stephen23 2020 年 10 月 20 日
So i have an array of elements like this:
A = [NaN; NaN; NaN; NaN; 2; 3; 6; 7; NaN; NaN; NaN; NaN; NaN; 4; 6; 8; 8; NaN; NaN; NaN; NaN]
What I need is to collect each group of numbers into new separate arrays like this:
B = [2; 3; 6; 7]
C = [4; 6; 8; 8]
How do i do that without hard-coding with the array index numbers? Thanks

採用された回答

Stephen23
Stephen23 2020 年 10 月 20 日
>> A = [NaN, NaN, NaN, NaN, 2, 3, 6, 7, NaN, NaN, NaN, NaN, NaN, 4, 6, 8, 8, NaN, NaN, NaN, NaN];
>> X = diff([true,isnan(A),true]);
>> B = find(X<0);
>> E = find(X>0)-1;
>> F = @(b,e) A(b:e);
>> C = arrayfun(F,B,E,'uni',0);
>> C{1}
ans =
2 3 6 7
>> C{2}
ans =
4 6 8 8
  2 件のコメント
Femi Bolarinwa
Femi Bolarinwa 2020 年 10 月 20 日
What if A was a column vector instead:
A = [NaN; NaN; NaN; NaN; 2; 3; 6; 7; NaN; NaN; NaN; NaN; NaN; 4; 6; 8; 8; NaN; NaN; NaN; NaN];
How would this change the code to achieve:
C = [2; 3; 6; 7]
B = [4; 6; 8; 8]
Thanks!
Stephen23
Stephen23 2020 年 10 月 20 日
X = diff([true;isnan(A(:));true]); % works for either column or row vector A

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMatrices and Arrays についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by