matlab代码使用线性插值而不使用interp1

时间:2015-05-05 09:18:28

标签: excel matlab interpolation linear

我有一个excel电子表格第一列是给定高度,其他三列是Kz(vel压力暴露系数)的值,它们取决于高度。我需要编写一个代码,当给定特定高度时,可以使用线性插值来计算Kz并在命令窗口中显示结果。 。对于用户指定高度大于500英尺并终止的情况,还应显示错误消息。提示用户指定曝光类型 提示用户指定地面以上的高度 给定指定的高度和指定的曝光类型

,确定正确的下限和上限

我使用xlsread导入了电子表格,但我无法使用interp1函数。

第一列具有以下值[15:5:30,30:10:100,100:20:200,200:50:500] 第二列的范围是.7000到1.56 第三列的范围从.85到1.77 第四列的范围为1.03至1.89

data=xlsread('PressureCoef.xslx');
Array=size(data);

Height=0;
Exposure_B=0;
Exposure_C=0
Exposure_D=0

Height(: 1)
Height=input('enter the height/n');   

For   Exposure=input('enter exposure type /n');            
    kz(:,2:4);
    kz=y1+((x-x1)(y2-y1)/(x2-x1)
    disp(kz)
    if Kz<1.56 && >.70
        disp('Exposure B')
    elseif Kz<1.77 && > .980
        disp('Exposure C')
    elseif Kz<1.89 && >1.16
        disp('Exposure D')
    end
end

1 个答案:

答案 0 :(得分:1)

所以你的问题归结为“如何找到等式kz=y1+((x-x1)(y2-y1)/(x2-x1)的值?”

最简单的一个:

x = Height

然后x1需要是“第1列”中的值,该值小于xx2的值更大:

我只是假设data是一个很好的数字数组,因为你没有给我们这方面的信息

X = data(:,1);
x1  = max(X(X<=x));
x2  = min(X(X>x));

y来自右列,其行对应x s:

ExposureNum = find('ABC' == Exposure);
y1 = data(X==x1, ExposureNum);
y2 = data(X==x2, ExposureNum);