![](http://www.tatmou.com/matlabcentral/answers/uploaded_files/355265/image.png)
噪声数据的线性分割
8视图(30天)
显示旧的评论
接受的答案
明星黾
2020年9月2日
这将是更容易和你的数据。没有他们,我创造了我自己。
试试这个:
x = 0:32;
y =[-0.5 *(0:11) + 10 +兰迪(12)[1],1日,4.5 *(12:14)-50 +兰迪([1],1,3),0 *(15:28)+ 13 +兰迪([1],1、14),4 *(29:32)+ 129 +兰迪([1],1、4)];
Lv = ischange (y,“线性”,“阈值”5);
Idx =[1找到(Lv),元素个数(y)];
为k = 1:元素个数(Idx) 1
P (:, k) = [x (Idx (k)) 1;x (Idx (k + 1)) 1] \ y (Idx (k, k + 1))。”;
结束
:斜坡= P (1)
拦截= P (2:)
图
情节(x, y,“o”)
持有在
情节(x (Idx), y (Idx),“p”)
持有从
网格
轴([0 35 0 15])
在这种运行,产生这一情节:
![](http://www.tatmou.com/matlabcentral/answers/uploaded_files/355265/image.png)
这些数据:
山坡上=
-0.6667 - 3.6667 0 -3.0000
拦截=
11.0000 -41.0000 14.0000 98.0000
您可能需要调整
“阈值”
值(这里
5
)来处理您的数据。它应该产生适当的斜坡和拦截的回归。的
ischange
函数中引入
R2017b
。一个类似的功能,
findchangepts
在信号处理工具箱(明显不同参数和输出)了
R2016a
。
答案(1)
布鲁诺陈德良
2020年9月3日
编辑:布鲁诺陈德良
2020年9月3日
类似的话题讨论
在这里
使用我的解决方案
BSFK
%产生随机数据
N = 5;%的数量线性段+ 1
休息= cumsum([0,1 +兰德(1,N)));
yb =兰德(大小(断裂));
系数= 0 (N, 2);
为k = 1: N
系数(k) = polyfit(优惠([k, k + 1])休息(k), yb ([k, k + 1]), 1);
结束
页=结构(“形式”,“页”,…
“优惠”,休息,…
“块”N…
“系数”系数,…
“秩序”2,…
“暗”1);
n = 1000;%数据点的数量
σ= 0.01;%高斯噪声性病
x = linspace (min(减免),max(减免),n);
y = ppval (pp、x) + 0.05 * randn(大小(x));
% %
关闭所有
BSFK (x, y, 2[][],结构(“annimation”1));% FEX
![](http://www.tatmou.com/matlabcentral/answers/uploaded_files/355720/image.png)