精华内容
下载资源
问答
  • 对曲线采样
    2021-04-18 14:59:50

    matlab采样函数(降采样,过采样,减采样函数)用法详解

    dyaddown

    功能:对时间序列进行二元采样,每隔一个元素提取一个元素,得到一个降采样时间序列。格式:

    1.y = dyaddown(x, EVENODD)

    当EVENODD=0时,从x中第二个元素开始采样(偶采样);当EVENODD=1时,从x中第一个元素开始采样(奇采样)。

    2.y = dyaddown(x)

    EVENODD缺省,按EVENODD=0

    dyadup

    功能:对时间序列进行二元插值,每隔一个元素插入一个0元素,得到一个时间序列。

    格式:

    1.y = dyadup(x, EVENODD)

    当EVENODD=0时,从x中第二个元素开始采样(偶采样);当EVENODD=1时,从x中第一个元素开始采样(奇采样)。

    2.y = dyadup(x)

    EVENODD缺省,按EVENODD=0

    interp

    功能:对时间序列进行整数倍插值,使得时间序列曲线更光滑。

    格式:

    1.y = interp(x, r)

    在x中插入一些数据,使得插值后的序列y的长度为x的r倍。

    2.y = interp(x, r, l, alpha)

    插值后得到的序列y的长度为x的r倍。

    3.[y, b] = interp(x, r, l, alpha)

    插值后同时得到一个低通插值滤波器的系数,长度为2rl+1.

    说明:

    x--时间序列

    r--插入点的倍数

    l--插值滤波器长度

    alpha--滤波器的截止频率,0y--插值后得到的时间学列

    b--低通插值滤波器的系数,长度为2rl+1

    更多相关内容
  • 1使用LabView进行数据采样2将采样信息绘制成波形图标
  • 样本结果: 在这里,您可以看到将原始样本中的间隔大小从最大减小到最小的效果: 您可以评估近似的优度,将原始曲线和重新采样曲线之间的面积(积分)相加: 如果绘制不同间隔大小的积分,则可以确定什么是好的采样: 就记录...

    使用参数函数

    可以定义分段参数函数:

    f[t_] := Piecewise[

    When x[i] <= t <= x[i + 1]

    f[t]= (y[i+1]-y[i]) (t - x[i]) / (x[i+1]-x[i]) + y[i],

    For {i, 1 ... N};

    然后选择您的点Q,理想间距小于最小p[i+1]-p[i]

    最后以相等的t间隔取样f[q]。

    样本结果:

    WRXd6.png

    在这里,您可以看到将原始样本中的间隔大小从最大减小到最小的效果:

    mJG9A.png

    您可以评估近似的优度,将原始曲线和重新采样曲线之间的面积(积分)相加:

    qo55p.png

    如果绘制不同间隔大小的积分,则可以确定什么是好的采样:

    uQDkK.png

    就记录而言,Mathematica中的代码是:

    a = 0;

    p = Table[{ a = a + RandomReal[], RandomReal[]}, {10}];

    f[t_, h_] := Piecewise[Table[{(h[[i + 1, 2]] - h[[i, 2]]) (t - h[[i, 1]]) /

    (h[[i + 1, 1]] - h[[i, 1]]) + h[[i, 2]],

    h[[i, 1]] <= t <= h[[i + 1, 1]]},

    {i, 1, Length[h] - 1}]];

    minSeg[h_] := Min[Table[Norm[h[[i, 1]] - h[[i + 1, 1]]], {i, Length[h] - 1}]];

    newSegSize[h_] := (h[[Length@h, 1]] - h[[1, 1]])/

    Ceiling[(h[[Length@h, 1]] - h[[1, 1]])/minSeg[h]]

    qTable = Table[{t, f[t, p]}, {t, p[[1, 1]], p[[Length@p, 1]], newSegSize[p]}];

    编辑:回复您的评论

    注释的PGM代码:

    a = 0; (* Accumulator to ensure an increasing X Value*)

    p = Table[{a = a + RandomReal[],

    RandomReal[]}, {10}]; (*Generates 10 {x,y} Rnd points with \

    increasing x Value*)

    f[t_, h_] := (* Def. a PWise funct:

    Example of resulting function:

    f[t,{{1,2},{2,2},{3,4}}]

    Returns teh following function definition:

    Value for Range

    2 1<=t<=2

    2+2*(-2+t) 2<=t<=3

    0 True

    *)

    Piecewise[

    Table[{(h[[i + 1, 2]] -

    h[[i, 2]]) (t - h[[i, 1]])/(h[[i + 1, 1]] - h[[i, 1]]) + h[[i, 2]],

    h[[i, 1]] <= t <= h[[i + 1, 1]]},

    {i, 1, Length[h] - 1}]];

    minSeg[h_] := (* Just lookup the min input point separation*)

    Min[Table[Norm[h[[i, 1]] - h[[i + 1, 1]]], {i, Length[h] - 1}]];

    newSegSize[h_] := (* Determine the new segment size for having

    the full interval length as a multiple of the

    segment size *)

    (h[[Length@h, 1]] - h[[1, 1]])/

    Ceiling[(h[[Length@h, 1]] - h[[1, 1]])/minSeg[h]]

    qTable = (*Generates a table of points using the PW function *)

    Table[

    {t, f[t, p]},

    {t, p[[1, 1]], p[[Length@p, 1]],newSegSize[p]}];

    ListLinePlot[{qTable, p}, PlotStyle -> {Red, Blue}] (*Plot*)

    展开全文
  • 主要是基于mtlab的程序,添加噪声处理,有CDF三角函数曲线/三维曲线图,从先验概率中采样,计算权重,FIR 底通和带通滤波器和IIR 底通和带通滤波器,是信号处理的基础。
  • 单片机采集到的车窗电压AD采样值,用MATLAB进行数据分析,电压变化曲线图像显示,以便进行模拟算法验证。
  • 适合于运用单片机进行温度采样,运用AD值转化为实际温度。运用三元三次方程拟合出三段曲线
  • 嵌入式Linux图形系统实时采样曲线绘制的实现.pdf
  • VTK笔记——插值样条曲线采样

    千次阅读 2019-02-01 16:35:15
    有时候我们想通过有限的点得到更多的点,比如用这些点来生成三角形,就需要用到曲线插值。最常见的是样条曲线插值。

    有时候我们想通过在样条曲线上得到更多的点,比如用这些点来与另一条曲线连通生成三角条,让曲线在可视化的时候分辨率更高,等等,就需要用到曲线插值采用。最常见的是样条曲线插值采样。
    曲线已经有了情况下(关于如何生成样条曲线,可参照VTK笔记——插值样条曲线(Parametric Spline)),
    在这里插入图片描述
    接下来要在曲线上取更多的点。

    曲线方程

    直线,两点就可形成一条直线。通过数学表示的直线方程,可以求得直线上任意一点的坐标。同理,曲线也是如此。
    vtk中,vtkParametricSpline包含有曲线方程,
    vtkParametricSpline::Evaluate
    vtkParametricSpline API及描述
    通常,根据需求的不同,有两种方式

    方式一

    点的个数n固定,求步长step。

    	vtkSmartPointer<vtkPoints> outPoints =
    		vtkSmartPointer<vtkPoints>::New();
    	int pointsCnt = 11; // n = 11
    	double step = 1.0 / (pointsCnt - 1);
    	// Fix bug: the result points n probably not enough
    	//for (double i = 0; i <= 1; i += step)
    	//{
    	//	double u[] = {i, 0, 0};
    	//	double p[3];
    	//	spline->Evaluate(u, p, NULL);
    	//	outPoints->InsertNextPoint(p);
    	//}
    	for (int i = 0; i < n; i++)
    	{
    		double u[3] = { i * step, 0, 0 }, p[3];
    		spline->Evaluate(u, p, nullptr);
    		outPoints->InsertNextPoint(p);
    	}
    }
    

    在这里插入图片描述

    方式二

    步长step一定,求点n的个数

    #define DIS(p1, p2) (sqrt((p1[0]-p2[0])*(p1[0]-p2[0]) + (p1[1]-p2[1])*(p1[1]-p2[1]) + (p1[2]-p2[2])*(p1[2]-p2[2])))
    	vtkSmartPointer<vtkPoints> outPoints =
    		vtkSmartPointer<vtkPoints>::New();
    
    	double totalLen = DIS(p0, p1) + DIS(p1, p2);
    	double start = 0;
    	double step = .5;
    
    	while (start <= totalLen)
    	{
    		double u[] = { start/totalLen, 0, 0 };
    		double p[3];
    		spline->Evaluate(u, p, NULL);
    		outPoints->InsertNextPoint(p);
    		start += step;
    	}
    

    在这里插入图片描述

    示例代码

    #include <vtkPolyData.h>
    #include <vtkSmartPointer.h>
    #include <vtkPolyDataMapper.h>
    #include <vtkActor.h>
    #include <vtkRenderWindow.h>
    #include <vtkRenderer.h>
    #include <vtkRenderWindowInteractor.h>
    #include <vtkProperty.h>
    #include <vtkParametricSpline.h>
    #include <vtkParametricFunctionSource.h>
    #include <vtkSphereSource.h>
    #include <vtkGlyph3DMapper.h>
    
    int main(int, char *[])
    {
    	double p0[3] = { 1.0, 0.0, 0.0 };
    	double p1[3] = { 3.0, 2.0, 0.0 };
    	double p2[3] = { 5.0, 0.0, 0.0 };
    
    	vtkSmartPointer<vtkPoints> points =
    		vtkSmartPointer<vtkPoints>::New();
    	points->InsertNextPoint(p0);
    	points->InsertNextPoint(p1);
    	points->InsertNextPoint(p2);
    
    	vtkSmartPointer<vtkParametricSpline> spline =
    		vtkSmartPointer<vtkParametricSpline>::New();
    	spline->SetPoints(points);
    
    	// Method1
    #if (0)
    	vtkSmartPointer<vtkPoints> outPoints =
    		vtkSmartPointer<vtkPoints>::New();
    	int pointsCnt = 11;
    	double step = 1.0 / (pointsCnt-1);
    	for (double i = 0; i <= 1; i = i + step)
    	{
    		double u[] = {i, 0, 0};
    		double p[3];
    		spline->Evaluate(u, p, NULL);
    		outPoints->InsertNextPoint(p);
    	}
    #else
    	// Method2
    #define DIS(p1, p2) (sqrt((p1[0]-p2[0])*(p1[0]-p2[0]) + (p1[1]-p2[1])*(p1[1]-p2[1]) + (p1[2]-p2[2])*(p1[2]-p2[2])))
    	vtkSmartPointer<vtkPoints> outPoints =
    		vtkSmartPointer<vtkPoints>::New();
    
    	double totalLen = DIS(p0, p1) + DIS(p1, p2);
    	double start = 0;
    	double step = .3;
    
    	while (start <= totalLen)
    	{
    		double u[] = { start/totalLen, 0, 0 };
    		double p[3];
    		spline->Evaluate(u, p, NULL);
    		outPoints->InsertNextPoint(p);
    		start += step;
    	}
    #endif
    
    	vtkSmartPointer<vtkParametricSpline> outSpline =
    		vtkSmartPointer<vtkParametricSpline>::New();
    	outSpline->SetPoints(outPoints);
    
    	vtkSmartPointer<vtkParametricFunctionSource> functionSource =
    		vtkSmartPointer<vtkParametricFunctionSource>::New();
    	functionSource->SetParametricFunction(outSpline);
    	functionSource->Update();
    
    	vtkSmartPointer<vtkPolyDataMapper> splineMapper =
    		vtkSmartPointer<vtkPolyDataMapper>::New();
    	splineMapper->SetInputConnection(functionSource->GetOutputPort());
    
    	vtkSmartPointer<vtkActor> splineActor =
    		vtkSmartPointer<vtkActor>::New();
    	splineActor->SetMapper(splineMapper);
    
    	vtkSmartPointer<vtkSphereSource> sphereSource =
    		vtkSmartPointer<vtkSphereSource>::New();
    	sphereSource->SetPhiResolution(21);
    	sphereSource->SetThetaResolution(21);
    	sphereSource->SetRadius(.05);
    
    	vtkSmartPointer<vtkPolyData> splinePointsData =
    		vtkSmartPointer<vtkPolyData>::New();
    	splinePointsData->SetPoints(outPoints);
    
    	vtkSmartPointer<vtkGlyph3DMapper> splinePointsMapper =
    		vtkSmartPointer<vtkGlyph3DMapper>::New();
    	splinePointsMapper->SetInputData(splinePointsData);
    	splinePointsMapper->SetSourceConnection(sphereSource->GetOutputPort());
    
    	vtkSmartPointer<vtkActor> pointsActor =
    		vtkSmartPointer<vtkActor>::New();
    	pointsActor->SetMapper(splinePointsMapper);
    	pointsActor->GetProperty()->SetColor(1, 0, 0);
    
    	vtkSmartPointer<vtkRenderer> renderer =
    		vtkSmartPointer<vtkRenderer>::New();
    	vtkSmartPointer<vtkRenderWindow> renderWindow =
    		vtkSmartPointer<vtkRenderWindow>::New();
    	renderWindow->SetSize(600, 600);
    	renderWindow->AddRenderer(renderer);
    	vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
    		vtkSmartPointer<vtkRenderWindowInteractor>::New();
    	renderWindowInteractor->SetRenderWindow(renderWindow);
    
    	renderer->AddActor(splineActor);
    	renderer->AddActor(pointsActor);
    
    	renderWindow->Render();
    	renderWindowInteractor->Start();
    
    	return EXIT_SUCCESS;
    }
    

    Example Download

    Reference
    vtkParametricSpline Class Reference
    在这里插入图片描述

    展开全文
  • 根据曲线上的采样点拟合直线

    千次阅读 2022-02-02 16:24:58
    //@para points:曲线上的所有采样点 //@para a,b,c: 直线ax+by+c=0的三个参数 void lineFit(vector<cv::Point2f> points, float &a, float &b, float &c) { int size = points.size(); float x...
    //@Func lineFit
    //@para points:曲线上的所有采样点
    //@para a,b,c: 直线ax+by+c=0的三个参数
    void lineFit(vector<cv::Point2f> points, float &a, float &b, float &c)
    {
    	int size = points.size();
    
    	float x_mean = 0;
    	float y_mean = 0;
    	for (int i = 0; i < size; i++)
    	{
    		x_mean += points[i].x;
    		y_mean += points[i].y;
    	}
    	x_mean /= size;
    	y_mean /= size; //至此,计算出了 x y 的均值
    
    	float Dxx = 0, Dxy = 0, Dyy = 0;
    
    	for (int i = 0; i < size; i++)
    	{
    		Dxx += (points[i].x - x_mean) * (points[i].x - x_mean);
    		Dxy += (points[i].x - x_mean) * (points[i].y - y_mean);
    		Dyy += (points[i].y - y_mean) * (points[i].y - y_mean);
    	}
    	float lambda = ((Dxx + Dyy) - sqrt((Dxx - Dyy) * (Dxx - Dyy) + 4 * Dxy * Dxy)) / 2.0;
    	float den = sqrt(Dxy * Dxy + (lambda - Dxx) * (lambda - Dxx));
    	a = Dxy / den;
    	b = (lambda - Dxx) / den;
    	c = -a * x_mean - b * y_mean;
    }
    
    展开全文
  • 利用Matlab对采样数据进行曲线拟合

    千次阅读 2019-03-14 08:11:42
    我们在做数据处理或者采集的时候难免会遇到实际值和采样结果之间存在误差的情况,这就需要我们通过实验结果进行曲线拟合,从而得到较为准确的结果。 这几天在做变换器的时候就遇到了处理器采样结果和实际输入电压...
  • Digitizer-从曲线图片上采样数据的插件.zip,Digitizer-从曲线图片上采样数据的插件,Digitize.OPK,安装和使用方法-Digitize7_Instruct.pdfDigitizer for Origin 7 Tool Installation Instructions 1) After ...
  • 我用seabron.distplot函数画出了一个离散序列的概率密度曲线,现在想对曲线进行固定 间隔采样,求出离散概率密度序列,请问下大神怎么做,谢了
  • 该算法离散的曲线进行光顺、拟合和采样,使用空间曲线微分几何性质计算各采样点的曲率和弗朗内特标架。通过曲率计算匹配点列表,通过对齐匹配点的弗朗内特标架进行曲线匹配,得到一个匹配矩阵集。从匹配矩阵...
  • 随机均匀采样的matlab代码实现,输入矩阵的大小和要采样的数目。返回一个随机均匀采样的测量矩阵,矩阵的值为0或1,0表示没有采样,1表示采样
  • 非均匀采样信号进行重采样

    千次阅读 2021-04-26 11:55:55
    以所需采样非均匀采样信号进行重采样resample 函数允许您将非均匀采样信号转换为使用新的均匀采样率。创建一个以大约 48 kHz 采样率不规则采样的 500 Hz 正弦波。我们通过向均匀向量添加随机值来模拟不规则性。...
  • 以前电子竞赛时写的程序,绝对可以用。M3 ARM控制ADC采样,并且通过TFT液晶显示采样曲线图。
  • 此拉伸设备中所涉及的工艺规范仅涉及轴向拉伸方向,从外界温度,拉伸速度,应力状态三个方面入手,我们可以得到大家熟知的由外力F和试件轴向伸长量△L之间的拉伸曲线
  • 基于matlab声音采样的体会 基于 matlab 声音采样的体会通过本实验的学习,基本学会了 matlab 中基本的的参数设置,该软件有了初步的了解;利用 simulink 中现有的模块,建立相应模型,并进行仿真。仿真结果...
  • 在python中一般采用matplotlib库的hist来绘制直方图,至于如何给直方图添加拟合曲线(密度函数曲线),一般来说有以下两种方法。 方法一:采用matplotlib中的mlab模块 mlab模块是Python中强大的3D作图工具,立体感...
  • 算法的基本思想:先在一个均匀网格上根据给定的曲线采样一个局部有向距离场,然后使用等值线抽取方法从有向距离场中获取偏移曲线.在构造局部距离场时引入3个过滤器,在远离偏移曲线的区域消除大量冗余计算.采用经典MS...
  • 常用采样方法

    2017-10-08 15:26:59
    例如 f(x)做积分,如果 f(x) = x^2,那么直接积分就行,很简单。 若f(x)是标准正态分布的概率密度函数(pdf),求[a,b]之间的定积分,那么直接用数学解析方法就搞不定了,因为我们知道正态分布的积分是
  • Bezier贝塞尔曲线

    千次阅读 2022-02-11 15:19:50
    Bezier贝塞尔曲线
  • 基于 T-S模糊模型,采用对称三角形模糊划分和 “网格角线法”提取模糊规则,通过 DISO系统和 Mackey-Glass无序时间序列进行建模,给出模糊模型训练性能 指标和检验性能指标随采样点个数增加的变化趋势曲线
  • 滚动采样.rar,滚动采样,磨削4.xls,Sample.exe,数结第一次作业报告.docx,磨削3.xls,磨削1.xls,Sample,Sample.sln,Sample,SelectTimeRange.h,CWorkbook.h,磨削4.xls,stdafx.cpp,Sample.cpp,Sample.vcxproj.user,Sample...
  • 16QAM的误码率仿真曲线,其中包括高斯信道,接收机,发射机,DDS升采样,降采样等过程。
  • PH曲线是弧长为多项式的Bezier曲线,其等距线可用有理多项式表示.由clothoid曲线端点的G1 Hermite插值条件,构造对应等弧长的最佳G1 5次PH插值曲线,以此作为逼近.利用微分几何中的Frenet―Serret公式和经典的...
  •  首先将mIC置于离低音单元锥盆底5cm的地方, 采用8000Hz的采样率,32768的MLS长度,测出单元近场的频响曲线。并点击S1储存。由Microphone缩写而来,麦克风 学名为传声器,传声器是将声音信号转换为电信号的能量转换...
  • 可以通过周期性地收集大量的ADC输出转换采样来生成FFT图。一般而言,ADC厂商们将一种单音、满量程模拟输入信号用于其产品说明书的典型性能曲线。您从这些转换获得数据,然后绘制出一幅与图1相似的图。
  • 在数字信号处理中,我们所用的数字信号大多是由模拟信号采样得到的,我们在利用matlab plot函数将这些离散点连成曲线时,会发现采样率与采样点数会波形有很大的影响,我们下面来分析一下具体影响,并分析一下对于...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 41,035
精华内容 16,414
关键字:

对曲线采样