2017-09-14 86 views
0

說我有一些隨機長度矢量: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的倍數,我必須使用插值。我該怎麼做?

+0

預期產量是多少? – rahnema1

+0

@ rahnema1預期輸出是長度爲10的矢量,但包括起點和終點。對於a,它輸出'a1 = [1。 。 。 。 。 。 。 。 13]'。對於b,它輸出'b1 = [1。 。 。 。 。 。 。 。 0]' – kyle

+0

請準確地包含預期的輸出。我無法理解'[1 .... 13]' – rahnema1

回答

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 

希望有所幫助。

+0

是的。謝謝。 – kyle

+0

很高興幫助。所以它只是幫助或實際回答你的問題? – nalyd88

+0

我認爲它的答案。但我必須確認。 – kyle