我正在寫一些matlab代碼,並且寫了一個可行的算法,但我不認爲它特別有效。因爲我正在努力提高自己的編程技能,所以我想知道是否有更高效的方法來做到這一點。在Matlab中更有效地循環使用矩陣元素
我有一個(相當大的〜E07)矩陣的值是無序的,但落在範圍[-100,100]之內。我想基於所述第一以創建第二矩陣,通過使用下面的規則:
- 如果點的值是> 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
有沒有更有效的方法?我覺得應該有一個辦法做到這一點使用邏輯索引,但這些對我來說是一個新的發現......
這也正是這樣的事情,我想!謝謝:) – FakeDIY