小编use*_*412的帖子

标准化直方图并在matlab中使y轴以百分比表示

编辑:好的,所以我回答了我自己的问题,通过阅读更旧的问题.我为提问而道歉!使用代码

Y = rand(10,1);
C = hist(Y);
C = C ./ sum(C);
bar(C)
Run Code Online (Sandbox Code Playgroud)

用相应的数据代替随机数据工作正常.现在只需要优化箱子大小.

美好的一天,现在我知道你一定会想到这已被问了一千次.在某种程度上,你可能是对的,但是我找不到我在这里找到的帖子中的具体问题的答案,所以我想我也可以问一下.我会尽量清楚,但请告诉我,如果不明白我想做什么

好吧,所以我有一个带有5000个元素的(行)向量,所有这些都只是整数.现在我要做的是绘制这些5000个元素的直方图,但是这样的方式使得y轴可以存在于某个特定的区域中,而x轴仍然是常规的,就像它给出了特定箱子的价值.

现在,对我来说有意义的是规范化一切,但这似乎不起作用,至少我是怎么做的.

我的第一次尝试是

sums = sum(A);
hist(sums/trapz(sums),50)
Run Code Online (Sandbox Code Playgroud)

我省略了其余部分,因为它从某个文件中导入了大量数据,这并不重要.sums = sum(A)工作正常,我可以看到matlab中的向量.(我该怎么称呼它,控制台?).但是,用trapz除以区域只会改变我的x轴,而不是我的y轴.一切都变得非常小,大约10 ^ -3,而它应该是10的数量级.

现在环顾四周,有人建议使用

hist(sums,50)
ylabels = get(gca, 'YTickLabel');
ylabels = linspace(0,1,length(ylabels));
set(gca,'YTickLabel',ylabels); 
Run Code Online (Sandbox Code Playgroud)

虽然这肯定会使y轴从0变为1,但它根本没有标准化.我希望它能真正反映出进入某个垃圾箱的可能性.将两者结合起来也行不通.如果答案非常明显,我道歉,我只是不明白.

编辑:虽然我意识到这是一个单独的问题(已被问过一百万次),但我只是手工采摘的箱子大小,直到它看起来很好,因为直方图中没有任何条形码丢失.我已经看过几个不同的脚本应该优化bin大小,但是它们似乎都没有在每种情况下制作出"最佳"的直方图,遗憾的是:(有没有一种简单的方法来选择大小,如果所有数字都是整数?

matlab histogram

6
推荐指数
1
解决办法
3万
查看次数

从数组中提取元素x,其中<x <= b

我正在尝试做一个相当简单的操作,我无法成功地执行.我所拥有的是一个数组(array0)的值,比如1000个,都在0到10之间.现在我要做的是创建三个独立的数组:

array1 = array0的所有元素等于3或更小数组2 = array0中所有元素大于3但等于或小于7数组3 = array0中所有大于7的元素

现在,array1和array3工作正常.我用

array1= array0(array0<=3);
array3= array0(array0>7);
Run Code Online (Sandbox Code Playgroud)

但阵列2是一个问题.对我来说,"符合逻辑"的是尝试

array2= array0(3<array0<=7);
Run Code Online (Sandbox Code Playgroud)

但这不起作用,只是给了我一个空数组.但它没有给出错误.任何人都可以帮我找到我的代码中的缺陷吗?

matlab matrix logical-operators

2
推荐指数
1
解决办法
39
查看次数

标签 统计

matlab ×2

histogram ×1

logical-operators ×1

matrix ×1