Finding values of specific range from table row or column

Hi,
I'm having the Table whose first column is as A = [12345 NaN NaN NaN NaN 457 NaN NaN NaN 785 NaN NaN NaN NaN NaN NaN 74502]
I want to select range as 12345 to NaN (shown in bold) , 457 to NaN and so on.
Please guide.

 Réponse acceptée

Stephen23
Stephen23 le 26 Juil 2019
Modifié(e) : Stephen23 le 26 Juil 2019
>> A = [12345 NaN NaN NaN NaN 457 NaN NaN NaN 785 NaN NaN NaN NaN NaN NaN 74502].'
A =
12345
NaN
NaN
NaN
NaN
457
NaN
NaN
NaN
785
NaN
NaN
NaN
NaN
NaN
NaN
74502
Method one: accumarray:
>> C = accumarray(cumsum(~isnan(A)),A,[],@(v){v});
>> C{:}
ans =
12345
NaN
NaN
NaN
NaN
ans =
457
NaN
NaN
NaN
ans =
785
NaN
NaN
NaN
NaN
NaN
NaN
ans =
74502
Method two: mat2cell:
>> X = diff(find([true;diff(isnan(A))<0;true]));
>> C = mat2cell(A,X,1);
>> C{:}
ans =
12345
NaN
NaN
NaN
NaN
ans =
457
NaN
NaN
NaN
ans =
785
NaN
NaN
NaN
NaN
NaN
NaN
ans =
74502

Plus de réponses (1)

Shreya Shetty
Shreya Shetty le 26 Juil 2019
Modifié(e) : madhan ravi le 26 Juil 2019

1 commentaire

madhan ravi
madhan ravi le 26 Juil 2019
Modifié(e) : madhan ravi le 26 Juil 2019
No, indices should be determined by the code and not by giving it manually.

Connectez-vous pour commenter.

Produits

Version

R2017b

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by