【问题标题】:Splitting an array into n parts and then joining them again forming a histogram将数组拆分为 n 个部分,然后再次将它们连接起来形成直方图
【发布时间】:2012-10-21 09:49:13
【问题描述】:

我是 Matlab 新手。

假设我有一个数组a = [1:1:1000]

我必须把它分成50个部分1-20; 21-40 .... 981-1000.

我正在尝试这样做。

E=1000X
a=[1:E]
n=50
d=E/n
b=[]
for i=0:n
   b(i)=a[i:d]
end

但我无法得到结果。

我正在处理的第二部分是,根据另一个结果,假设我的答案是 3,第一个拆分数组应该有一个计数器,并且应该是 +1,如果答案是 45,则第三个拆分数组的计数器应该是 +1 等等,最后我必须制作所有计数器的直方图。

【问题讨论】:

  • -1 甚至懒得去谷歌搜索或先搜索。谷歌搜索“matlab 直方图”的前两个结果是 hist()(绘图)和 histc()(分箱函数)。关于 SO:stackoverflow.com/search?q=matlab+histogram 你的答案是第二个链接。这不应该代替自己做一些工作。

标签: arrays matlab histogram


【解决方案1】:

您可以使用one functionhistc 完成所有这些操作。在您的情况下:

X = (1:1:1000)';
Edges = (1:20:1000)';
Count = histc(X, Edges);

本质上,Count 包含X 中属于Edges 中定义的类别的元素数量,其中Edges 是一个单调递增的向量,其元素定义了连续类别的边界。一个更常见的例子可能是使用概率密度构造X,比如均匀分布,例如:

X = 1000 * rand(1000, 1);

试一试XEdges 的规范,你应该明白了。如果您想要实际的直方图,请查看hist 函数。

至于你问题的第二部分,我不太确定你在问什么。

【讨论】:

    猜你喜欢
    • 2013-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-20
    • 2017-03-08
    • 2021-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多