How to convert continuous form of data into discrete steps form?
15 ビュー (過去 30 日間)
古いコメントを表示
I looking for help to convert countinous form of data into discreate steps form.
Here is the example, please help me to ffind solution.
X = [ 1 3 5 8 10 15 20 25 30 34 38 40 45 50 55 60 65 69 70]
y =[ 1 3 5 4 6 5 8 7 6 7 6 7 6 7 6 7 5 7 0 1]
I want convert X variable in to steps multiple of 5 [0 5 10 15 20 25..] and coresspong values of y betwen these steps should be mean(y). Well I am looking for output in the following format.
x= [5,10,15...]
y=[3,5,5..].
I tried with find(x<5), which gave me indices for calculating the mean (y), but its too laborous method.
Thank you
採用された回答
Cris LaPierre
2020 年 8 月 26 日
Try this (uses the data your supplied in the repost). Note that your data in X3 goes to 1.42, not 0.6. It's also unclear if you just want the summarized data, or the full 50,000 rows back. This gives 50,000 rows.
load ChetanBadgujar_DATA.mat
% Define edges of ranges
rg = 0:0.05:0.6;
% Identify groups (
newX3 = discretize(X3,rg,rg(2:end),"IncludedEdge","right");
% Find the max value in each range
Ymean = groupsummary(Y,X3,rg,@mean,"IncludeMissingGroups",false)
newY = discretize(X3,rg,Ymean)
1 件のコメント
Cris LaPierre
2020 年 8 月 26 日
編集済み: Cris LaPierre
2020 年 8 月 26 日
Older versions of MATLAB (before R2018b) require the inputs to groupsummary to be tables. This convert X3 and Y to a table.
load ChetanBadgujar_DATA.mat
data = table(X3,Y);
% Define edges of ranges
rg = 0:0.05:0.6;
% Identify groups (
newX3 = discretize(data.X3,rg,rg(2:end),"IncludedEdge","right");
% Find the max value in each range
Ymean = groupsummary(data,'X3',rg,@mean,'Y',"IncludeMissingGroups",false)
newY = discretize(data.X3,rg,Ymean.fun1_Y)
% Visualize result
plot(X3,Y,'x')
hold on
plot(newX3,newY,'wo')
hold off
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Data Type Conversion についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!