废话不多说,请看源程序:
clear ,clc;
format long
x=(0:0.01:100)';
y_0=besselj(0,x);
% y_1=besselj(1,x); %一阶,这里只画了0阶
% y_2=besselj(2,x); %二阶
plot(x,y_0);grid on;
axis([0,100,-1,1]);
title('0阶贝塞尔函数曲线图');
xlabel('Variable X');
ylabel('Variable Y');
%画包络线
hold on;
[up,down] = envelope(x,y_0,'spline');
plot(x, up, 'r');
plot(x, down, 'r');
其中的envelope是个单独的.m文件,是个函数,用来画包络线。说白了就是求拐点然后插值:
function [up,down] = envelope(x,y,interpMethod)
%ENVELOPE gets the data of upper and down envelope of the known input (x,y).
%
% Input parameters:
% x the abscissa of the given data
% y the ordinate of the given data
% interpMethod the interpolation method
%
% Output parameters:
% up the upper envelope, which has the same length as x.
% down the down envelope, which has the same length as x.
%
% See also DIFF INTERP1
% Designed by: Lei Wang, <WangLeiBox@hotmail.com>, 11-Mar-2003.
% Last Revision: 21-Mar-2003.
% Dept. Mechanical & Aerospace Engineering, NC State University.
% $Revision: 1.1 $ $Date: 3/21/2003 10:33 AM $
if length(x) ~= length(y)
error('Two input data should have the same length.');
end
if (nargin < 2)|(nargin > 3),
error('Please see help for INPUT DATA.');
elseif (nargin == 2)
interpMethod = 'linear';
end
% Find the extreme maxim values
% and the corresponding indexes
%----------------------------------------------------
extrMaxValue = y(find(diff(sign(diff(y)))==-2)+1);
extrMaxIndex = find(diff(sign(diff(y)))==-2)+1;
% Find the extreme minim values
% and the corresponding indexes
%----------------------------------------------------
extrMinValue = y(find(diff(sign(diff(y)))==+2)+1);
extrMinIndex = find(diff(sign(diff(y)))==+2)+1;
up = extrMaxValue;
up_x = x(extrMaxIndex);
down = extrMinValue;
down_x = x(extrMinIndex);
% Interpolation of the upper/down envelope data
%----------------------------------------------------
up = interp1(up_x,up,x,interpMethod);
down = interp1(down_x,down,x,interpMethod);
效果:
源程序下载:http://www.pudn.com/downloads495/sourcecode/windows/other/detail2062657.html
csdn上传资源标签里竟然没有Matlab,桑不起啊。。。。
分享到:
相关推荐
零阶一类贝塞尔函数曲线及其包络线,参见:http://blog.csdn.net/yanzi1225627/article/details/8228244
可以绘制1-5阶的贝塞尔函数图像,方便查询贝塞尔函数零点范围,在工程中有重要应用。
matlab源码,实现1-8阶贝塞尔(bezier)曲线拟合。另外附了一个拟合后的评价标准,sse,rmse等的说明(感谢hitwyb)
第一类柱贝塞尔函数Jp(z) p为整数n时,Jn=(1) nJn; p不为整数时,Jp与Jp线性无关。 第二类柱贝塞尔函数N p(z)(柱诺依曼函数) n为整数时Nn=(1) nNn。 第三类柱贝塞尔函数Hp(z) (柱汉开尔函数): 第一...
主要是对数据点进行拟合
第一类贝塞尔函数,使计算第一类贝塞尔函数更快更方便。
求第一类贝塞尔函数的根分布及其它的导数图形
matlab源码,实现1-8阶贝塞尔(bezier)曲线拟合。附一个拟合后的评价标准。
详细源码讲解如何计算贝塞尔曲线,可以实现曲线的平滑算法
画出第一类0-5阶贝塞尔函数曲线图,并求出它的近似零点,用矩阵表示出来。
Qt 中有相当方便的绘制接口 ( 由 QPainter 提供 ) 。 例如贝塞尔曲线的 API: QPainterPath 的 quadTo() 和 ...因此,我想到利用贝塞尔的公式生成曲线点,然后用直线来连接,即可实现「 N阶贝塞尔曲线绘制 」。
matlab开发-贝塞尔函数。复序贝塞尔函数与变元
matlab开发-包含贝塞尔函数的四元计算积分。数值计算形式的积分:int[j[v,x]f[x],x,0,inf]
贝塞尔曲线做一个曲线动画框架
贝塞尔函数-汉克尔积分变换;贝塞尔函数-汉克尔积分变换;贝塞尔函数-汉克尔积分变换;贝塞尔函数-汉克尔积分变换
实现贝塞尔高斯光束自由传输matlab仿真程序
计算贝塞尔函数的一阶导数的零点。 使用以下更改更新 BessDerivZerosBisect.m: 1. 允许 m = 0 2. 允许用户指定所需的特定 m 和 k 值。 3. 允许容差输入参数4. 使用查表为 m 和 k 的小值获得更接近的初始化。 5. ...
这份 Matlab 源代码可以实现 1 到 8 阶的贝塞尔曲线拟合,从而帮助你更好地分析和处理数据。贝塞尔曲线拟合是一种常用的数学方法,它可以通过调整曲线的控制点来拟合数据,从而得到更加平滑的曲线。此外,我们还附上...