Matlab 将数字拆分为多个部分,并获取最接近某个数字的部分

Matlab 将数字拆分为多个部分,并获取最接近某个数字的部分,matlab,Matlab,我想把一个数字分成几部分 例: 然后抓取一个给定的数字(如121)并检测哪一个最接近,在本例中为128 最好的方法是什么 谢谢。你的问题写得有点混乱,但我会回答你的问题: 给定一个数组a=[64 128 192 256]和一个数字,比如b=121,确定a中哪个元素最接近b: [~,i] = min(abs(a-b)) a(i) 然后a(i)将包含最接近b的数字您的问题写得有点混乱,但我会回答您的问题: 给定一个数组a=[64 128 192 256]和一个数字,比如b=121,确定a中哪个元素

我想把一个数字分成几部分

例:

然后抓取一个给定的数字(如121)并检测哪一个最接近,在本例中为128

最好的方法是什么


谢谢。

你的问题写得有点混乱,但我会回答你的问题:

给定一个数组
a=[64 128 192 256]
和一个数字,比如
b=121
,确定
a
中哪个元素最接近
b

[~,i] = min(abs(a-b))
a(i)

然后
a(i)
将包含最接近
b的数字

您的问题写得有点混乱,但我会回答您的问题:

给定一个数组
a=[64 128 192 256]
和一个数字,比如
b=121
,确定
a
中哪个元素最接近
b

[~,i] = min(abs(a-b))
a(i)

然后
a(i)
将包含最接近
b

的数字,您不需要计算所有部分

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 

您不需要计算所有零件

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 

要乘坐@fiveclubs,请回答:

 d=4;
 c=256;
 a=arrayfun(@(x)(x*d),(1:d)*c/d^2 ) % ;)
按照他的建议,我会给你数组

 b=121;
 [~,i] = min(abs(a-b))
 a(i)

clossest point.

乘坐@fiveclubs回答:

 d=4;
 c=256;
 a=arrayfun(@(x)(x*d),(1:d)*c/d^2 ) % ;)
按照他的建议,我会给你数组

 b=121;
 [~,i] = min(abs(a-b))
 a(i)

clossest point.

不错!但是如何生成
数组呢?我的意思是,我想把数字256分成两部分,然后得到[128 256]。现在我想分为四个部分,我得到[64 128 192 256]…很好!但是如何生成
数组呢?我的意思是,我想把数字256分成两部分,然后得到[128 256]。现在我想分为四个部分,我得到[64 128 192 256]…这个
y
来自哪里?这是最有意义的,它是可伸缩的和有效的。这个
y
来自哪里?这是最有意义的,它是可伸缩的和有效的。
linspace(c/d,c,d)
获得
a
可能更优雅。是的,我的实际建议
(1:d)*c/d
非常相似。arrayfun只是一个玩笑…
linspace(c/d,c,d)
获得
a
可能更优雅。是的,我的实际建议
(1:d)*c/d
非常相似。arrayfun只是一个玩笑。。。