我有一个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
答案 0 :(得分:1)
所以你的问题归结为“如何找到等式kz=y1+((x-x1)(y2-y1)/(x2-x1)
的值?”
最简单的一个:
x = Height
然后x1
需要是“第1列”中的值,该值小于x
而x2
的值更大:
我只是假设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);