matlab折线图怎么作一条连接极值的曲线已经做出了一条折线图,现在要用两根平滑的曲线画出点子上的上、下限;然后在其中间画出平均曲线,该怎么做

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/04 14:38:06
matlab折线图怎么作一条连接极值的曲线已经做出了一条折线图,现在要用两根平滑的曲线画出点子上的上、下限;然后在其中间画出平均曲线,该怎么做

matlab折线图怎么作一条连接极值的曲线已经做出了一条折线图,现在要用两根平滑的曲线画出点子上的上、下限;然后在其中间画出平均曲线,该怎么做
matlab折线图怎么作一条连接极值的曲线
已经做出了一条折线图,现在要用两根平滑的曲线画出点子上的上、下限;然后在其中间画出平均曲线,该怎么做

matlab折线图怎么作一条连接极值的曲线已经做出了一条折线图,现在要用两根平滑的曲线画出点子上的上、下限;然后在其中间画出平均曲线,该怎么做
简单编了个程序,不过还是有点问题,如果一个峰有两个棱角,有可能包不进去.
如果都是一个尖就没问题.不知道合乎你要求不
n=20;
x=1:n;
y=rand(1,n); % 随机取的20个点,可以换成你自己的数据
plot(x,y)
hold on
xi=linspace(min(x),max(x),100);
indtop=find(diff(sign(diff(y)))==-2)+1; % 计算极大值点的位置
indtop=[x(1),indtop,x(end)]; % 加入第一点和最后一点
yitop=interp1(x(indtop),y(indtop),xi,'cubic'); % 上面的平滑曲线
plot(xi,yitop,'g')
indbottom=find(diff(sign(diff(y)))==2)+1; % 计算极小值点的位置
indbottom=[x(1),indbottom,x(end)]; % 加入第一点和最后一点
yibottom=interp1(x(indbottom),y(indbottom),xi,'cubic'); % 下面的平滑曲线
plot(xi,yibottom,'g')
plot(xi,(yitop+yibottom)/2,'r')
hold off