Kri*_*ris 3 arrays algorithm matlab vector vectorization
在尝试将算法从C#移植到Matlab时,我发现Matlab在运行循环时效率很低.因此我想要对算法进行矢量化.
我有以下输入:
低量程:
[ 00 10 20 30 40 50 ... ]
Run Code Online (Sandbox Code Playgroud)
高变速:
[ 10 20 30 40 50 60 ... ]
Run Code Online (Sandbox Code Playgroud)
这些数组的长度相等.
我现在有一个第三组Values(可以是任何长度),该阵列我要计数的出现Values之间的元素lowerange(i)和highrange(i)(你可以看到我从未来的for循环).
输出应该是长度低范围/高范围的数组.
所以用上面的数组和输入LineData:
[ 1 2 3 4 6 11 12 16 31 34 45 ]
Run Code Online (Sandbox Code Playgroud)
我希望得到:
[ 05 03 00 02 01 00 ... ]
Run Code Online (Sandbox Code Playgroud)
我试过(对我来说)显而易见的事情:
LineData(LineData < PixelEnd & LineData > PixelStart)
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为它只是按元素方式检查元素上的LineData.它不会尝试对所有值应用比较LineData.
不幸的是,由于我还没有习惯用Matlab的"向量"方式思考,所以我无法想出任何其他内容,更不用说从内存中了解所有适用的指令.
当您想要使用给定边缘执行基本直方图时,您可以使用Matlabs内置函数histc:
values = [ 1 2 3 4 6 11 12 16 31 34 45 ];
edges = 0:10:60;
histc(values, edges)
ans =
5 3 0 2 1 0 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
78 次 |
| 最近记录: |