我正在编写一些matlab代码,已经编写了一个算法,但我认为它不是特别高效。由于我想提高我的编程技能,我想知道是否有更有效的方法来实现这个算法。
我有一个(相当大的~ E07)值矩阵,这些值是无序的,但在范围[-100, 100]内。我想创建一个基于第一个矩阵的第二个矩阵,使用以下规则:
1. 如果点的值>70,则点的值应设置为70。 2. 如果点的值<-70,则点的值应设置为-70。 3. 所有其他值应四舍五入到最接近的5的倍数。
这是我目前正在做的事情:
我有一个(相当大的~ E07)值矩阵,这些值是无序的,但在范围[-100, 100]内。我想创建一个基于第一个矩阵的第二个矩阵,使用以下规则:
1. 如果点的值>70,则点的值应设置为70。 2. 如果点的值<-70,则点的值应设置为-70。 3. 所有其他值应四舍五入到最接近的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
是否有更高效的方法?我认为应该有一种使用逻辑索引的方法,但这对我来说是一个新的发现...