如何在MATLAB中绘制矩阵列的直方图?

如何在MATLAB中绘制矩阵列的直方图?,matlab,matrix,plot,histogram,Matlab,Matrix,Plot,Histogram,我必须为MatrixE1的每一列绘制直方图。我该怎么做呢?这是我到目前为止写的 % Create a random 5 x 3 matrix filled with random values between 0 and 10 a0 = 0; b0 = 10; r = a0 + (b0-a0).*rand(1,1); matrixA = [randi([0 10]) randi([0 10]) randi([0 10]); randi([0 10]) randi([0 10]) randi([0

我必须为
MatrixE1
的每一列绘制直方图。我该怎么做呢?这是我到目前为止写的

% Create a random 5 x 3 matrix filled with random values between 0 and 10
a0 = 0;
b0 = 10;
r = a0 + (b0-a0).*rand(1,1);
matrixA = [randi([0 10]) randi([0 10]) randi([0 10]); randi([0 10]) randi([0 10]) randi([0 10]); randi([0 10]) randi([0 10]) randi([0 10]); randi([0 10])      randi([0 10]) randi([0 10]); randi([0 10]) randi([0 10]) randi([0 10])]
% Create identity matrix 3 x 3 
matrixB = eye(3,3) 

% Create new submatrix of A with the last 3 rows
matrixC =  matrixA(end-2 : end, :) 

%  Pair wise multiplication of C and B
matrixD = times(matrixC, matrixB)  

%  Concatenate Matrix A and D
matrixE1 = [matrixA ; matrixD]

% Plot histogram of columns. 
matrixColumn1 = matrixE1(1 : end , end-2: end-2);  
matrixFColumn2 = matrixE1(1 : end, end -1 : end-1);
matrixFColumn3 = matrixE1(1 : end, end : end); 


您可以访问matrixE1中的每个列,如下所示:

firstCol = matrixE1(:,1);
secondCol = matrixE1(:,2);
thirdCol = matrixE1(:,3);
…然后您可以简单地使用comand hist()来绘制直方图。您可以将matrixE1中第一列的柱状图绘制为:

hist(firstCol);
如果我理解你的第二个问题: “我会怎么做?历史(??)。如何获得matrixE1所有列的直方图?我应该做hist(矩阵1)吗?“” 在绘制一个柱状图的柱状图后,只需使用命令hold on。然后在同一个图上绘制另一个直方图。例如,如果要将第一列和第二列的柱状图从matrixE1绘制到同一个绘图,请键入:

hist(firstCol);
hold on;
hist(secondCol);

您可以访问matrixE1中的每个列,如下所示:

firstCol = matrixE1(:,1);
secondCol = matrixE1(:,2);
thirdCol = matrixE1(:,3);
…然后您可以简单地使用comand hist()来绘制直方图。您可以将matrixE1中第一列的柱状图绘制为:

hist(firstCol);
如果我理解你的第二个问题: “我会怎么做?历史(??)。如何获得matrixE1所有列的直方图?我应该做hist(矩阵1)吗?“” 在绘制一个柱状图的柱状图后,只需使用命令hold on。然后在同一个图上绘制另一个直方图。例如,如果要将第一列和第二列的柱状图从matrixE1绘制到同一个绘图,请键入:

hist(firstCol);
hold on;
hist(secondCol);

还有另一种更简单但计算成本更高的方法:

plotmatrix(A)
对于任何矩阵A,这将生成输入矩阵所有两两组合的散点图的m×n图(不要对大矩阵执行此操作,因为大矩阵超出了屏幕上的显示范围


您在顶部获得的是沿绘图矩阵主对角线的直方图



还有另一种更简单但计算成本更高的方法:

plotmatrix(A)
对于任何矩阵A,这将生成输入矩阵所有两两组合的散点图的m×n图(不要对大矩阵执行此操作,因为大矩阵超出了屏幕上的显示范围


您在顶部获得的是沿绘图矩阵主对角线的直方图



由于其他答案(,)使用过时的函数
hist
而添加此答案

MATLAB建议避免使用
hist
,现在支持()。转换是直接的

%MATLAB R2019a
%样本数据
NumPoints=2000;
a1=10*兰特(整数,1);
a2=wblrnd(3,7,NumPoints,1);
a3=7+0.75*randn(整数,1);
A=[a1 a2 a3];%数据矩阵

%使用过时的函数
hist
为n执行Sturges规则,由于其他答案(,)而添加此答案

MATLAB建议避免使用
hist
,现在支持()。转换是直接的

%MATLAB R2019a
%样本数据
NumPoints=2000;
a1=10*兰特(整数,1);
a2=wblrnd(3,7,NumPoints,1);
a3=7+0.75*randn(整数,1);
A=[a1 a2 a3];%数据矩阵

%为nDid实现Sturges规则如果您尝试
hist()
?我会怎么做?历史(??)。如何获得matrixE1所有列的直方图?我应该做hist(matrixE1)吗?你试过
hist()
?我会怎么做?历史(??)。如何获得matrixE1所有列的直方图?是否应该执行hist(matrixE1)?更新:来自文档:“
hist
”不建议使用。更新。更新:来自文档:“
hist
”不建议使用。改为使用。更新:来自文档:“
hist
”不建议使用。改为使用。更新:来自文档:“
hist
不推荐使用。改用。“更新。这是一个漂亮的把戏。注意……这是如何解决所有列在同一柱状图中可视化的问题的?当我运行你的代码时,它会沿着主对角线将它们放在单独的子图中。没错,我错过了他的那部分要求。在这种情况下,我将覆盖输出中的各个绘图。您的解决方案更完整,需要对数据有一定的理解才能正确缩放,是吗?考虑到MATLAB矩阵的性质,我不确定是否需要太多的理解。但不管情节如何,在一个可视化(或不同的领域尺度)中填充太多的内容是有实际限制的,这对于任何方法都可能发生。这是一个巧妙的技巧。注意……这是如何解决所有列在同一柱状图中可视化的问题的?当我运行你的代码时,它会沿着主对角线将它们放在单独的子图中。没错,我错过了他的那部分要求。在这种情况下,我将覆盖输出中的各个绘图。您的解决方案更完整,需要对数据有一定的理解才能正确缩放,是吗?考虑到MATLAB矩阵的性质,我不确定是否需要太多的理解。但不管如何绘制,在一个可视化(或不同的领域尺度)中填充过多的内容都有实际的限制,任何方法都会出现这种情况。