私は次の表を持っています
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 が表に示されている値として与えられることを示しています。nc 値のベクトルを指定すると、これらの値を返す必要があるいくつかのコードを matlab に記述しました。
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 ループが非常に多いと速度が低下するのではないかと少し心配しています。誰かがこれについてコメントしたり、これを行うためのより高速な方法 (有用な場合) を提案できますか?