私はいくつかのmatlabコードを書いていて、機能するアルゴリズムを書いていますが、特に効率的だとは思いません。プログラミングスキルを向上させようとしているので、これを行うより効率的な方法があるかどうかを知りたい.
順序付けされていないが、範囲 [-100, 100] 内に収まる (かなり大きい ~ E07) 値のマトリックスがあります。次のルールを使用して、最初のマトリックスに基づいて 2 番目のマトリックスを作成します。
- ポイントの値が 70 を超える場合、ポイントの値を 70 に設定する必要があります。
- ポイントの値が -70 未満の場合、ポイントの値を -70 に設定する必要があります。
- 他のすべての値は、最も近い 5 の倍数に丸める必要があります。
これが私が現在行っていることです:
data = 100*(-1+2*rand(1,10000000)); % create random dataset for stackoverflow
new_data = zeros(1,length(data));
for i = 1:length(data)
if (data(i) > 70)
new_data(i) = 70;
elseif (data(i) < -70)
new_data(i) = -70;
else
new_data(i) = round(data(i)/5.0)*5.0;
end
end
より効率的な方法はありますか?論理インデックスを使用してこれを行う方法があるはずだと思いますが、それらは私にとって新しい発見です...