我成功地从a读取了数据。trk文件并解析其头和主体。现在我必须应用插值。在此之前,这里是关于我的变量的信息:
我有tracks <1x110470 struct>
在tracks结构下,我有两个向量。它们是nPoints
和matrix
。nPoints
包括向量matrix
中存在的点的数量。
例如,如果我选择轨道(1,95607),则nPoints=3且matrix={(1.2323,1.4441,2.345),(2.333,4.555,4.123)、(1.22,2.33,3.44)}
nPoints不是固定的数字。也可以是100等。但矩阵是一个nPoints*3
向量。我总是有三个坐标。
现在我要做的是一个基本的插值,比如取一半的边界,然后添加新的点。让我假设,在轨道(1,2)下,我有三个点a,B,c,d,那么我需要添加点(a+b)/2和(b+c)/2和(c+d)/2。
首先,我甚至不能写一个成功的算法来做到这一点。你能帮帮我吗?(插值将应用于所有轨迹。但是我不会在轨道(1,1)和轨道(1,2)之间进行任何插值,我只会将其应用于轨道内的点,轨道中的点也不排序。)
第二,我想知道的是:有可能有一种进行参数化内插的算法。我的意思是:
假设我的观点是:a、B
如果参数=1,那么我只想加上(a+B)/2
如果parameter=2,那么除了parameter=1时的参数之外,我还希望有(a+(a+B)/2)/2和((a+b)/2)+b)/2
......
我想让它像这样反复进行。这可能吗?
2条答案
按热度按时间c0vxltue1#
我真的不知道你真正想要的是什么“参数化插值”,我把我最好的猜测放在这里。
我猜你想在某个时候做一个
[a b c d] -> [a (a+b)/2 b (b+c)/2 c (c+d)/2 d]
转换,可能需要多次迭代。对于这个问题,我的解决方案是
[a b c d] -> [a (a+b)/2 b (b+c)/2 c (c+d)/2 d]
变换由下式给出interp([a b c d], 1)
。其他示例:
interp([1 2], 2)
-〉[1 1.25 1.5 1.75 2]
。d4so4syb2#
查看Signal Processing和官方Matlab帮助(F1)。