我有下表
nc a b
0.9 <= nc 0.33 -0.45
0.5 <= nc < 0.9 0.95 -0.75
0.1 <= nc < 0.5 2.2 -0.97
nc < 0.1 1.18 -0.77
这表示如果观测到的云量在所示范围之间,则 a 和 b 将作为表中表示的值给出。我已经在 matlab 中编写了一些代码,这些代码应该在给定 nc 值向量的情况下返回这些值:
nc = [0.1, 0.6, 0.5 ,0.2, 0.9];
a = nan(length(nc),1); % pre-allocate arrays
b = nan(length(nc),1);
for i = 1:length(nc)
if nc(i) >= 0.9;
ai = 0.33;
bi = -0.45;
elseif nc(i) >= 0.5 & nc(i) < 0.9
ai = 0.95;
bi = -0.75;
elseif nc(i) >= 0.1 & nc(i) < 0.5
ai = 2.2;
bi = -0.97;
elseif nc(i) < 0.1
ai = 1.18;
bi = -0.77;
end
a(i) = ai;
b(i) = bi;
end
然而,这似乎是一个很长的路要走。此外,这段代码最终会被输入到许多其他函数中,我有点担心有这么多的 if 语句和 for 循环通常会减慢速度。任何人都可以对此发表评论或建议一种更快的方法(如果有用的话)吗?