Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
matlab中矩阵行直方图的矢量化_Matlab_Histogram - Fatal编程技术网

matlab中矩阵行直方图的矢量化

matlab中矩阵行直方图的矢量化,matlab,histogram,Matlab,Histogram,你好,我需要计算一个大矩阵中每一行的直方图。 例如,对于第一行,我得到: AA = hist(symbolic_data(1,:), 1:8); 使用symbolic_数据(1,:)=[7 6 7 8 7],我得到AA=[0 0 0 0 1 3 1] 当然,使用简单的for循环很容易,但我的符号_数据矩阵非常大。 有没有一种方法可以将其矢量化。 我一直在摆弄bsxfun,但我无法让它工作。 任何帮助都将不胜感激。 谢谢您的时间。来自Matlab帮助: N=历史(Y)箱将Y的元素放入10个等距容

你好,我需要计算一个大矩阵中每一行的直方图。 例如,对于第一行,我得到:

AA = hist(symbolic_data(1,:), 1:8);
使用
symbolic_数据(1,:)=[7 6 7 8 7]
,我得到
AA=[0 0 0 0 1 3 1]

当然,使用简单的for循环很容易,但我的符号_数据矩阵非常大。 有没有一种方法可以将其矢量化。 我一直在摆弄
bsxfun
,但我无法让它工作。 任何帮助都将不胜感激。 谢谢您的时间。

来自Matlab帮助:

N=历史(Y)箱将Y的元素放入10个等距容器中 并返回每个容器中的元素数。如果Y是一个 矩阵,hist沿列向下运行

因此:

将从Matlab帮助中执行所需操作

N=历史(Y)箱将Y的元素放入10个等距容器中 并返回每个容器中的元素数。如果Y是一个 矩阵,hist沿列向下运行

因此:

你想干什么就干什么

这是一条路要走。但是如果您想使用
bsxfun

  • 如果只有整数值,请使用

    bin_centers = 1:8;
    AA = squeeze(sum(bsxfun(@eq, permute(symbolic_data,[2 3 1]), bin_centers(:).')));
    
  • 如果值不一定是整数:

    bin_centers = 1:8;
    AA = squeeze(sum( bsxfun(@le, permute(symbolic_data,[2 3 1]), bin_centers(:).'+.5) &...
         bsxfun(@gt, permute(symbolic_data,[2 3 1]), bin_centers(:).'-.5) ));
    
  • 这是一条路要走。但是如果您想使用
    bsxfun

  • 如果只有整数值,请使用

    bin_centers = 1:8;
    AA = squeeze(sum(bsxfun(@eq, permute(symbolic_data,[2 3 1]), bin_centers(:).')));
    
  • 如果值不一定是整数:

    bin_centers = 1:8;
    AA = squeeze(sum( bsxfun(@le, permute(symbolic_data,[2 3 1]), bin_centers(:).'+.5) &...
         bsxfun(@gt, permute(symbolic_data,[2 3 1]), bin_centers(:).'-.5) ));