Data Selection/Sorting

1 次查看(过去 30 天)
I have a column vector known as Data. Please see attached. I want to divide/sort this column vector into two (80% and 20%). I want the 80% to comprise the first largest/lowest values in 'Data' and the remaining 20% to comprise the next largest/lowest values. Any ideas? Thank you so much!

采纳的回答

JESUS DAVID ARIZA ROYETH
I hope this is what you are looking for:
data=[23 20 18 50 17 24 56 35 38 19 29 53 26]';
f=sort(data,'descend');
f2=reshape([f flipud(f)]',[],1);
vector80=f2(1:round(numel(data)*0.8))
vector20=f2(round(numel(data)*0.8)+1:numel(data))
Another interpretation of what I understood could be like this too:
data=[23 20 18 50 17 24 56 35 38 19 29 53 26]';
f=sort(data,'descend');
vector80=f(1:round(numel(data)*0.8))
vector20=f(round(numel(data)*0.8)+1:numel(data))
  2 个评论
Curious Mind
Curious Mind 2019-11-10
编辑:Curious Mind 2019-11-10
Thanks for your comment. I made a typo in my post. It is actually a column vector not a row vector. Can this code be modified for the case of a column vetcor?
JESUS DAVID ARIZA ROYETH
it works for both forms, if data is 1x13 then change it with data = data '; so that it is 13x1, and if you want to show the results as rows then add a single quote, for example: vector80 = f2 (1: round (numel (data) * 0.8)) '

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

产品


版本

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by