我想在部分中分割一个数字
例如:
256 / 4 = [64 128 192 256]
抓住一个给定的数字(例如121)并检测哪一个最接近,在这种情况下为128.
最好的方法是什么?
感谢。
答案 0 :(得分:2)
你写的问题有点令人困惑,但我会回答我的想法:
给定一个数组a = [64 128 192 256]
和一个数字,比如说b = 121
,确定a
中哪个元素最接近b
:
[~,i] = min(abs(a-b))
a(i)
然后a(i)
将包含最接近b
的数字。
答案 1 :(得分:2)
乘坐@fiveclubs回答:
d=4;
c=256;
a=arrayfun(@(x)(x*d),(1:d)*c/d^2 ) % ;)
然后,将为您提供数组
b=121;
[~,i] = min(abs(a-b))
a(i)
最关键的一点。
答案 2 :(得分:1)
您无需计算所有部件
function[res] = splitgrab(n, nParts, x) % (256, 4, 121)
d = n / nParts; % d = 64
mult = max(1, min(nParts, round(x / d))); % mult = 2
res = mult * d; % res = 64 * 2