【发布时间】:2014-08-14 05:28:50
【问题描述】:
我想插入一个数据集,但给定的 X 可以有多个 Y,示例如下:
A(:,1:2,1)=
95.2343 70.6159
96.4501 71.5573
97.4430 72.7315
98.9743 72.8699
100.0470 71.7690
100.3872 70.2699
100.7797 68.7837
102.1478 68.0814
103.6851 68.0521
105.0307 68.7966
105.8972 70.0666
106.7177 71.3665
107.7095 72.5416
108.9175 73.4924
110.3574 74.0309
111.8943 73.9859
113.3936 73.6446
114.6645 72.7794
115.5911 71.5522
116.2426 70.1591
116.3922 68.6286
116.3503 67.0914
116.7771 65.6147
117.9045 64.5692
119.4065 64.2425
120.9432 64.2923
122.2526 65.0975
122.9486 66.4682
122.8841 68.0043
122.5492 69.5051
122.2403 71.0109
122.0819 72.5402
这些是蛇身上的点,从自上而下的视频中数字化。他们的姿势经常导致每个 X 有 2 个或更多 Y 点,而且因为他们在我需要保持一致的 XY 框架时(经常剧烈地)转动,所以我不能只旋转我的 X 和 Y。
我可以使用cscvn 制作样条函数,使用fnplt 绘制时看起来很棒!但是,当我尝试使用 ppval 取回值时,一切都变成了废话,我得到了两条看起来不像蛇或 fnplt 中显示的曲线。
图片在这里: http://imgur.com/aYJ0Ftj
我只想为这些点拟合一条曲线,然后将该曲线转换为一系列可能有 200 个 XY 点。
我假设有一些非常简单的答案,一些我在搜索中从未出现过的命令,但我一生都找不到它。这远远超出了我通常的技能(我更习惯于在沼泽中爬行,捕捉任何有鳞或粘糊糊的东西),所以我确信我忽略了一些对于熟练的 MATLAB 用户来说完全显而易见的东西。
谢谢!
【问题讨论】:
-
你看过interp1吗?您可能需要多次调用它,我不确定您所说的每个 X 2 个或更多 Y 点是什么意思。您必须发布一个具有所需结果的示例。
-
所以你想要一个单值函数有多个值?
-
发布的值将显示分数。 fnplt(cscvn(squeeze(A(:,:,1))'),'r',2) 将显示样条线。
-
我显然无法发布图片,因为我以前从未在这里问过任何问题
标签: matlab curve-fitting spline interpolation