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) ));