2012-10-21 36 views
0

嗨我有一些麻煩讓兩個向量是相同的大小。基本上,我有一個包含大量元素的矢量和另一個包含較少元素的矢量,這些元素與較大矢量中的元素相對應。例如,如果我的短矢量具有兩個元素,這些元素將對應於較大矢量中的第一個和最後一個元素,如果三個小矢量對應於較大矢量的第一個中間元素和最後一個元素。 我需要爲較小的向量生成插值,以便它和較大的向量具有相同的大小。我正在嘗試使用interp1函數,但無法找到使其工作的方法。 謝謝Matlab,interp1

簡單的例子,我希望這使得它更清晰,新的C_L仍然應該以0.0結束,並仍然以1.4開頭,然後第一批新數字必須插入,以便它們在1.4和1.6之間,接下來設置在1.6和1.7之間,依此類推。

% For finding the lift curve slope across a wing 
semispan = 8; % User inputs 
C_L = [1.4,1.6,1.7,1.4,1.1,0.0]; % from a user input at stations which equally subdivide the wing. 
x = 0:0.2:semispan 

% C_L needs to be the same length as x 
c_L = interp1(C_L,x,'linear','extrap') % Don't know how to do this part correctly. 

plot(x,C_L) 
+0

你能告訴你的一些代碼。 '但看不到辦法讓它工作'是模糊的......什麼不起作用? – Rasman

+0

對不起,我無法解釋它,我添加了一些代碼和意見,我希望能夠澄清。 – wookie1

回答

4

的解決方案是,以彌補的座標向量,讓由用戶給定的測量值的位置,然後使用interp1

例如,假設您有三個測量值,點0,0.5和1 - 那麼座標向量將是[0, 0.5, 1]。看起來好像您的測量值被定義爲在0semispan之間被等距分隔,在這種情況下,您可以使用linspace(0, semispan, N)在(和包括)這些值之間創建N個等間隔座標的向量。

一旦獲得了測量值和測量值本身的座標,然後可以使用interp1來插入實際測量值之間的值。

這應該工作:

% For finding the lift curve slope across a wing 
semispan = 8; % User inputs 
C_L = [1.4,1.6,1.7,1.4,1.1,0.0]; % from a user input at stations which equally subdivide the wing. 
C_L_coord = linspace(0, semispan, length(C_L)); 

x = 0:0.2:semispan 

% C_L needs to be the same length as x 
C_L_interpolated = interp1(C_L_coord, C_L, x); 

plot(C_L_coord, C_L, x, C_L_interpolated);