0

嗨,我在让两个向量大小相同时遇到了一些麻烦。本质上,我有一个包含大量元素的向量和另一个包含较少元素的向量,这些元素对应于较大向量中的元素。例如,如果我的短向量有两个元素,它们将对应于较大向量中的第一个和最后一个元素,如果三个在小向量中,它们将对应于较大向量的第一个中间元素和最后一个元素。我需要为较小的向量生成插值,以便它和较大的向量大小相同。我正在尝试使用 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)
4

1 回答 1

4

解决方案是组成一个坐标向量,给出用户给出的测量位置,然后使用interp1.

例如,假设您在点 0、0.5 和 1 处进行了三个测量,那么坐标向量将为[0, 0.5, 1]。看起来您的测量值被定义为在0和之间等距semispan,在这种情况下,您可以使用在(并包括)这些值之间创建 N 个等距坐标的向量linspace(0, semispan, 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);
于 2012-10-21T16:32:26.870 回答