【问题标题】:Adapting hist3 in Matlab to output xx yy zzMatlab中的hist3适配输出xx yy zz
【发布时间】:2020-07-21 16:04:54
【问题描述】:

我正在尝试调整 matlab 中的 hist3 函数,以便在生成直方图的同时输出绘制的变量,但我没有成功。谁能解释如何做到这一点?我尝试将 xx、yy、zz 声明为全局,但仍然无法将它们移入工作区。

我不会因为在论坛上发布他们的代码(我假设是受版权保护的)而对 Matlab 产生麻烦(这也是 300 行长),但您可以在 matlab 中查看

open hist3

我在 hist3 的末尾添加了

if nargout > 0
nn = n; %this is the last line in the code

global x1 %I added these 
x1= xx;
global y1
y1 = yy;
global z1
z1 = zz;
end

【问题讨论】:

    标签: matlab histogram


    【解决方案1】:

    根据documentation

    N = hist3(___) 返回 X 中每个 bin 中的元素数。此语法不会创建直方图。

    [N,C] = hist3(___) 在 1×2 数值向量元胞数组中返回 bin 中心的位置,并且不绘制直方图。

    因此,您可以改为通过这些语法获得二元直方图计数和 bin 中心。

    如果要绘制直方图并获取值,只需使用该函数两次:

    hist3(yourData);
    [N,C] = hist3(yourData);
    

    现在,如果您还想要 2D 网格(相当于您的 x1y1,您可以使用 meshgrid - documentations 等函数生成这些网格。使用C{1}C{2} 作为meshgrid 函数的输入。

    我真的建议反对更改任何 MATLAB 的内置函数。

    【讨论】:

    • 跟进问题 - 现在我可以得到我想要的数据,我想取几个直方图的平均值然后重新绘制直方图 - 那么如何从 N 制作直方图?
    • 我不确定我是否理解您的问题。 N 是柱状图的高度,你想绘制N 的柱状图吗?在这种情况下,您可以简单地使用hist(N)。我也不知道“取几个直方图的平均值”是什么意思。请澄清。
    • 好的,我有几个不同实验的直方图。我使用 hist3 来获取每个测试的数据分布。现在我每个测试都有 N,所以我可以找到所有测试的平均值 N。这给我留下了 X,Y(来自 C{1} 和 C{2})和 Z = 均值 N。现在我已经取了平均值,我该如何重建直方图? * 我认为我最好再问一个问题 - 给我一点时间来问它 - 我会评论一个链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 2021-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-06
    相关资源
    最近更新 更多