我在网上搜索试图找到我遇到的这个问题的答案。
我有一个类似于以下的数组
A = [2 4 6 8 ; 3 5 7 9 ; 1 4 6 9]
row median = [ 5 6 5 ]
col median = [ 2 4 6 9 ]
我想根据这些值创建一个中值图。所以我创建了数组
MedianMap = int8(zeros(MAX_ROWS, MAX_COLS))
在这个数组中,我想分配三个不同的值:1、0、-1。因此中值映射输出将与数组“A”具有相同的大小:
- 如果该值大于行和列中值,则将“1”分配给中值图
- 如果该值小于行和列中值,则将“-1”分配给中值图
- 否则为 0?
如何遍历“A”数组中的每一行和每一列并将其与其各自的列和行中位数相关联?
我用C代码编写了代码并且成功了,但是在Matlab中却遇到了困难。
我将这样做:
- 为每个条件创建逻辑索引(元素大于/小于行/列中位数)
- 使用逻辑索引来更新 MedianMap。
In code:
[xMedian, yMedian] = meshgrid(col_median, row_median);
isRowHigh = (A > yMedian);
isColHigh = (A > xMedian);
isRowLow = (A < yMedian);
isColLow = (A < xMedian);
MedianMap(isRowHigh & isColHigh) = 1;
MedianMap(isRowLow & isColLow) = -1;
Notes:
-
meshgrid扩大
row_median
and col_median
放入大小相同的数组中A
-
A > yMedian
返回大小相同的矩阵A
包含比较每个元素的布尔结果A
与相应的元素xMedian
.
-
isRowHigh & isColHigh
对布尔矩阵执行逐元素与操作
-
MedianMap(L)
, where L
是一个逻辑索引(布尔矩阵),选择以下元素MedianMap
对应的元素为L
这是真的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)