MATLAB:从随机长度向量输出一个固定长度的向量?

时间:2017-09-14 01:50:01

标签: matlab

说我有一些随机长度的矢量:

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的倍数,我必须使用插值。我怎么能这样做?

1 个答案:

答案 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

希望有所帮助。