部分拆分并抓取最接近MATLAB的数字

时间:2014-09-05 15:01:53

标签: matlab

我想在部分中分割一个数字

例如:

256 / 4 = [64 128 192 256]

抓住一个给定的数字(例如121)并检测哪一个最接近,在这种情况下为128.

最好的方法是什么?

感谢。

3 个答案:

答案 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