gpt4 book ai didi

matlab - 使用自定义阈值舍入数字

转载 作者:太空宇宙 更新时间:2023-11-03 19:49:38 27 4
gpt4 key购买 nike

我希望能够在超过阈值(不是 0.5)时向上“舍入”数字,否则向下舍入。

这是我想出的一些糟糕的代码。 matlab 中是否有为此内置的函数,或者更优雅的解决方案(可能是矢量化的)?

function [ rounded_numbers ] = custom_round( input_numbers, threshold )
%CUSTOM_ROUND rounds between 0 and 1 with threshold threshold

[input_rows, input_cols] = size(input_numbers);
rounded_numbers = zeros(input_rows, input_cols);

for i = 1:length(input_numbers)
if input_numbers(i) > threshold
rounded_numbers(i) = 1;
else
rounded_numbers(i) = 0;
end
end
end

谢谢

最佳答案

就用

round(x - treshold + 0.5)

测试用例:

>> x = -10:0.3:10
ans =
-2 -1.7 -1.4 -1.1 -0.8 -0.5 -0.2 0.1 0.4 0.7 1 1.3 1.6 1.9


>> treshold = 0.8; % round everything up for which holds mod(x,1) >= treshold
>> y = round(x-treshold+0.5)

ans =
-2 -2 -2 -1 -1 -1 -1 0 0 0 1 1 1 2

负数也可以正确舍入,但边界除外:-0.8 舍入为 -1 而不是 0,但这与 round 通常具有的行为相同:round(-0.5) 返回 -1

关于matlab - 使用自定义阈值舍入数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10342060/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com