2016-08-21 80 views
0

我试图用hist3直观地显示一个二维分布,但是该函数的行为意外。我认为它会返回输入矩阵中每对数字出现次数的二维直方图(计数),并在输出矩阵中的某个位置显示该计数,该位置的索引与该数字对相对应,缩放为因子10(默认)或其他方形矩阵大小。但是,这不是什么我的测试实施例显示:Matlab - hist3没有返回预期的输出

例如,如果我定义以下输入矩阵

1 1 
2 2 
3 3 
4 4 
5 5 

则命令 V = hist3(M,[5 5]) 具有以下预期输出:

1 0 0 0 0 
0 1 0 0 0 
0 0 1 0 0 
0 0 0 1 0 
0 0 0 0 1 

然而此输入矩阵:

4 1 
4 2 
4 3 
4 4 
4 5 

输出为:

0 0 0 0 0 
0 0 0 0 0 
1 1 1 1 1 
0 0 0 0 0 
0 0 0 0 0 

比..rather(因为我本来期望):

0 0 0 0 0 
0 0 0 0 0 
0 0 0 0 0 
1 1 1 1 1 
0 0 0 0 0 

任何人都可以帮助清除混乱呢?谢谢!

回答

1

这是因为默认指数值介于2和6之间,因此4是第三个指数。尝试绘制它:

figure; 
hist3(m,[5 5]) 

编辑

了一种使用确定边缘hist3

EDGES = {(1:5)-0.5, (1:5)-0.5}; 
figure;hist3(m,'Edges',EDGES); 

+0

恐怕还是不要不行在第二个例子中,为什么hist3返回那个意外矩阵的原因。您是否说我需要使用边缘解决方法才能从中获得我想要的?另外,你的第一个绘图有一个尺寸为6x5而不是5x5的2D底座,就像我的例子中的矩阵一样?!... – z8080

+1

是的,好吧。如果你真的想在第四栏有条,你必须玩边。但是,如果你没有指定边缘的matlab会自动做到这一点。 我认为在这里你很困惑,因为指数和值有相同的范围。尝试乘以10的初始矩阵。你会看到'v = hist3(vv,[5 5])'的输出仍然是相同的,但'hist3(m,[5 5])'的曲线相应地改变到初始值的新范围矩阵。 – shamalaia

+0

我解释了我自己吗? – shamalaia