说我有一些随机长度的矢量:
a = [1 2 3 4 5 6 7 8 9 91 1 3 2 4 2 7 6 9 12 313 32 57 327 2 13]
b = [1 9 3 8 5 6 7 8 9 91 1 3 2 4 2 7 6 9 12 313 32 57 327 2 13 1 1 1 1 1 1 0 0 0 0 0]
我想输出长度为10的向量,使用均匀间隔的元素(包括第一个和最后一个元素)。我知道如果原始矢量的长度不是10的倍数,我必须使用插值。我怎么能这样做?
答案 0 :(得分:2)
如果我正确理解你的问题,你想使用插值从任何输入向量产生10个元素的向量。以下代码应该可以使用。
b = [1 9 3 8 5 6 7 8 9 91 1 3 2 4 2 7 6 9 12 313 32 57 327 2 13 1 1 1 1 1 1 0 0 0 0 0]
interp1(linspace(1,10,length(b)),b,1:10)
输出:
ans =
1.0000 5.3333 8.7778 2.3333 6.4444 188.1111 5.6667 1.0000 0 00 0
基本上,您定义要在1到10范围内定义的b
值,然后在10元素向量1:10
上重新采样。如果它们需要是整数而不是双精度,则可以使用round
。
b = [1 9 3 8 5 6 7 8 9 91 1 3 2 4 2 7 6 9 12 313 32 57 327 2 13 1 1 1 1 1 1 0 0 0 0 0]
round(interp1(linspace(1,10,length(b)),b,1:10))
输出:
ans =
1 5 9 2 6 188 6 1 0 0
希望有所帮助。