Data Selection/Sorting

2 次查看(过去 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 中查找有关 Shifting and Sorting Matrices 的更多信息

产品


版本

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by