【问题标题】:Plot a parametric equation in Matlab在 Matlab 中绘制参数方程
【发布时间】:2011-09-13 20:52:05
【问题描述】:

我有两组数据:[t1 ; x][t2 ; y],其中ts 在两者的范围内,但可能取不同的值。一个简单的例子:

[t1 ; x] = 
     1     2     4
     1     4    16

[t2 ; y] =
     1     3     5
     1     9    25

这里的底层函数很简单:x = t1.^2y = t2.^2。我的目标是绘制xy 的图。由于t 取的值不一样,我不能简单地使用plot(x,y)。例如,由于x == y,我应该得到一条坡度线1,但plot(x,y) 不是直的,而且两块都没有坡度1。

应用程序比这个简单的例子复杂得多,而且我没有生成数据点的底层函数。数据有时很稀疏,所以我不能因为丢弃t1t2 之间不常见的点而丢失信息。

我希望 Matlab 有一些内置函数可以获取两个数据集并提取xy 之间的依赖关系,而将t 作为一个看不见的参数。有人知道这样的功能吗?取而代之的是,我愿意接受有关编写一个好方法的建议。

【问题讨论】:

    标签: matlab plot parameterized


    【解决方案1】:

    我建议为此使用样条线。

    给定tx,x,ty,y,您可以使用SPLINE为一系列时间点timeRange生成xy的图表命令:

    xx = spline(tx,x,timeRange); %# interpolate x vs time
    yy = spline(ty,y,timeRange); %# interpolate y vs time
    
    plot(xx,yy);
    

    如果基础数据嘈杂,那么您可能需要使用平滑样条曲线(例如CSAPS),但需要曲线拟合工具箱。

    【讨论】:

    • 我喜欢这个声音。如果我将 timeRange 设置为 tx 和 ty 的并集,那应该包含我的所有数据,对吧?我会试一试的。谢谢。
    • @PengOne:只要timeRange 分别包含txty 的最小值和最大值,它将合并您的所有数据。要获得更平滑的曲线,您可以在timeRange 中将点间距更密集;比如你上面例子中的1:0.1:5
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多