【发布时间】:2017-08-01 02:49:48
【问题描述】:
MATLAB 的accumarray 在许多应用程序中都非常强大。我的问题是,应用于我的输入的accumarray 函数具有三个输出,而accumarray 只能处理标量输出。例如,我想做这样的事情:
subs = [1;2;4;2;4;5];
vals = [1;1;1;2;5;1];
accumarray(subs, vals, [], @(x)[min(x),mean(x),max(x)],0)
并让accumarray返回:
1.0000 1.0000 0 1.0000 1.0000
1.0000 1.5000 0 3.0000 1.0000
1.0000 2.0000 0 5.0000 1.0000
我想我可以只运行accumarray 三次,但我的功能很慢,运行一次accumarray 会比运行三次要快得多。我是不是刚被冲到这里?
【问题讨论】:
-
您也可以使用统计工具箱中的grpstats,或者如果您有许可证,也可以使用图像处理工具箱中的regionprops。
-
@rahnema1, min/mean/max 只是一个具体的例子来证明我的问题。我对 accumarray 的实际功能与 min/mean/max 完全不同,所以 grpstats 对我没有帮助。我每天都使用 regionprops,但我不知道你在描述什么。
-
您可以使用 regionprops 来查找区域的统计属性。用法:
stats = regionprops(subs, vals,'MaxIntensity','MeanIntensity','MinIntensity')。正如您所说,您的 accumarray 实际函数与 min/mean/max 完全不同,因此 regionprops 也无济于事。
标签: matlab matrix accumarray