我有1Xn单元格值的数组.我想计算matlab中给定范围内的值.我实现如下:
count1 = length(find(h{1}<ti & h{1}>ti-INT));
Run Code Online (Sandbox Code Playgroud)
h是我的单元格数组,我想要ti和ti-INT之间的值计数.
此实现提供了正确的结果,但速度非常慢.是否有更快的功能可用于指定的操作?
小智 5
对出现标志求和:
count1 = sum(h{1}<ti & h{1}>ti-INT);
Run Code Online (Sandbox Code Playgroud)
我知道我会为MATLAB的神使用tic和toc代码timig而烦恼,但是:
x = rand(10^7,1);
tic; sum(x>0.5); toc;
tic; nnz(x>0.5); toc;
tic; length(find(x>0.5)); toc;
Run Code Online (Sandbox Code Playgroud)
在几次运行中显示的速度sum()是两倍,比例快nnz()3倍length(find()):
Elapsed time is 0.049855 seconds.
Elapsed time is 0.120931 seconds.
Elapsed time is 0.162025 seconds.
Run Code Online (Sandbox Code Playgroud)
这是在我的R2012a上运行在带有i5 + 3Gb RAM的Windows机器上.
稍后编辑:
为了计算整个单元阵列中的元素,可以使用:
count_all = sum(cellfun(@(x) sum(x<ti & x>ti-INT), h));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
78 次 |
| 最近记录: |