hist改变edge边界MATLAB
时间: 2024-02-06 12:09:27 浏览: 20
您可以使用MATLAB中的函数`histedge`来修改直方图的边界。`histedge`函数的语法如下:
```
[n,edges] = histedge(x,edges)
```
其中,`x`是数据向量,`edges`是指定的边界向量。`histedge`函数将返回新的边界向量和相应的直方图计数。
例如,假设您有一个数据向量`x`,并且您想要将直方图的边界从`[-2, 2]`更改为`[-3, 3]`。您可以使用以下代码:
```
x = randn(1000,1); % 生成随机数据
edges = linspace(-2,2,11); % 原始边界
[n,edges] = histcounts(x,edges); % 计算原始直方图
new_edges = linspace(-3,3,13); % 新边界
new_n = zeros(size(new_edges)-1); % 初始化新直方图计数
for i = 1:length(edges)-1
idx = find(new_edges >= edges(i) & new_edges <= edges(i+1));
new_n(idx) = new_n(idx) + n(i);
end
bar(new_edges(1:end-1),new_n) % 绘制新直方图
```
在上面的代码中,我们首先使用`histcounts`函数计算原始的直方图计数和边界。然后,我们定义新的边界向量`new_edges`,并使用一个循环来将原始直方图计数映射到新的边界上。最后,我们绘制新的直方图。
相关问题
hist matlab
您想了解关于MATLAB的历史吗?MATLAB是由MathWorks公司开发的一种数学软件,最初是在1984年由美国新墨西哥大学的数学家Cleve Moler创建的。Moler最初是为了解决自己的矩阵计算问题而开发了这个软件,后来他在1984年离开了学术界,全职加入了MathWorks公司,继续开发和推广MATLAB。自那时以来,MATLAB已经成为数学、工程和科学领域的标准工具之一,被广泛用于各种领域的计算和仿真应用。
hist3 matlab
hist3是Matlab中的一个函数,用于绘制二维直方图。它可以将一个二维数据按区间数分割,然后计算每个方形区间内的样本数,从而得到二维数据的频数统计结果。具体来说,该函数将数据分成多个区间,然后统计每个区间内有多少个样本,最后以矩阵的形式输出这些统计结果。
你可以使用以下代码来使用hist3函数绘制密度图:
```
X = [DI, Er]; % DI和Er是两个列向量,代表二维数据的两个维度
N = hist3(X, 'CdataMode', 'auto', 'Ctrs', {0:0.005:3, 0:0.005:1.4});
N = flipud(N'); % 转置矩阵使得横纵轴与我们熟悉的xy方向对应一致
N(N == 0) = nan; % 将零值设为nan是为了将个数为零的格子涂为白色
h = imagesc(N);
set(h, 'alphadata', ~isnan(N)); % 将nan值涂为白色,否则显示为背景色(蓝色)
% 以下是一些作图美观设置,可根据需要进行调整
hco = colorbar;
set(get(hco, 'label'), 'string', 'Counts', 'FontSize', 18, 'Fontname', 'Arial');
caxis([0, 1000]);
ax = gca;
ax.XTickLabel = {'0', '0.5', '1', '1.5', '2', '2.5', '3'};
ax.YTick = [0, 40, 80, 120, 160, 200, 240, 280];
ax.YTickLabel = {'1.4', '1.2', '1', '0.8', '0.6', '0.4', '0.2', '0'};
set(gca, 'FontSize', 15, 'Fontname', 'Arial');
ylabel('DI', 'FontSize', 18, 'Fontname', 'Arial');
xlabel('Er', 'FontSize', 18, 'Fontname', 'Arial');
```