如何使用逻辑索引MATLAB获取3d矩阵中每个切片中某些区域的平均值

Q_1.0

在Matlab中

如果我有一个如下的3d矩阵,我想知道每个切片中值大于5的区域的平均值。我如何使用逻辑索引来做到这一点,请不要循环?

我想以3 x 1的数组结尾,每个元素表示其对应切片中区域的平均值。

m3d = randi(10,[3,3,3])

m3d(:,:,1)=

 7     7     8
 1     9     8
 9     7     6

m3d(:,:,2)=

10    10     5
 9     7     8
 5     3     3

m3d(:,:,3)=

 9     7     5
 4     1     9
 5     9     1

获取索引

3d_index = m3d > 5;

我的决赛

result = mean(m3d(3d_index));

在那我不想有所有地区的平均值

迪卡卡

一种方法-

%// 3d mask of elements greater than 5
mask = m3d>5

%// Sum of all elements greater than 5 in each slice
sumvals = sum(reshape(m3d.*mask,[],size(m3d,3)))

%// Count of elements great than 5 in each slice
counts = sum(reshape(mask,[],size(m3d,3)))

%// Final output of mean values for the regions with >5 only
out = sumvals./counts

标杆管理

这是一些运行时测试,以查看所有已发布方法的立场。对于测试,我们采用大小1500 x 1500 x 100为interval的随机3D数组[1,255]基准测试代码如下:

m3d = randi(255,1500,1500,100); %// Input 3D array

%// Warm up tic/toc.
for k = 1:50000
    tic(); elapsed = toc();
end

disp('------------------------ With SUMMING and COUNTING ')
tic
%// .... Proposed approach in this solution
toc, clear out counts sumvals mask

disp('------------------------ With FOR-LOOP ')
tic
N   = size(m3d, 3);
out = zeros(N, 1);
for k = 1:size(m3d,3)
        val    = m3d(:,:,k);
        lix    = val>5;
        out(k) = mean(val(lix));
end;
toc, clear out lix val k N

disp('----------------------- With ACCUMARRAY')
tic
ind = m3d>5;
result = accumarray(ceil(find(ind)/size(m3d,1)/size(m3d,2)), m3d(ind), [], @mean);
toc, clear ind result

disp('----------------------- With NANMEAN')
tic
m3d(m3d<5) = NaN; %// Please note: This is a bad practice to change input
out = nanmean(nanmean(m3d,1),2);
toc

运行时间

------------------------ With SUMMING and COUNTING 
Elapsed time is 0.904139 seconds.
------------------------ With FOR-LOOP 
Elapsed time is 2.321151 seconds.
----------------------- With ACCUMARRAY
Elapsed time is 4.350005 seconds.
----------------------- With NANMEAN
Elapsed time is 1.827613 seconds.

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在numpy中获取3D数组的2D切片的平均值

来自分类Dev

在切片中绘制3D矩阵-MATLAB

来自分类Dev

在切片中绘制3D矩阵-MATLAB

来自分类Dev

基于2D数组的3D numpy切片的平均值

来自分类Dev

如何获取列表中每个索引的均值并取大于平均值的索引?

来自分类Dev

如何在 Matlab 中计算多年同一天数据的 3D 矩阵的平均值?

来自分类Dev

从3D numpy数组的每个2D切片中获取不同的列

来自分类Dev

3d矩阵R的平均值

来自分类Dev

计算 3D 矩阵之间的平均值

来自分类Dev

将3d阵列中的每个矩阵切片乘以R中的单个矩阵

来自分类Dev

Matlab中矩阵的运行平均值

来自分类Dev

使用for循环获取矩阵中特定点的平均值

来自分类Dev

使用for循环获取矩阵中特定点的平均值

来自分类Dev

MATLAB:计算3D数组中每隔两页的元素平均值

来自分类Dev

如何使用BigQuery获取每个记录组的最后3条记录的平均值?

来自分类Dev

使用 C# 获取列表中每个元素的第一个索引的平均值

来自分类Dev

如何使用numpy中的指定索引从3D矩阵中获取元素?

来自分类Dev

如何使用条件参数获取SQL中的平均值

来自分类Dev

获取沿3D矩阵每个维度的索引

来自分类Dev

Matlab:4维矩阵中的平均值

来自分类Dev

MATLAB:使用CONVN在矩阵上移动平均值

来自分类Dev

如何在OpenCV中访问3D矩阵的切片

来自分类Dev

使用每个平均资产的平均值的查询来查询存储在mongodb中的平均值的平均值

来自分类Dev

如何在不使用matlab中查找的情况下获取逻辑矩阵的索引?

来自分类Dev

如何使用索引访问切片中的元素,该索引由golang中的引用传递

来自分类Dev

如何获取平均值而忽略字段的某些值

来自分类Dev

如何沿列(垂直)从 2D 矩阵中切片矩阵并在 tensorflow 中创建 3D?

来自分类Dev

如何在ojAlgo矩阵中沿列或行获取元素的平均值?

来自分类Dev

使用整形的平均3d矩阵matlab

Related 相关文章

  1. 1

    在numpy中获取3D数组的2D切片的平均值

  2. 2

    在切片中绘制3D矩阵-MATLAB

  3. 3

    在切片中绘制3D矩阵-MATLAB

  4. 4

    基于2D数组的3D numpy切片的平均值

  5. 5

    如何获取列表中每个索引的均值并取大于平均值的索引?

  6. 6

    如何在 Matlab 中计算多年同一天数据的 3D 矩阵的平均值?

  7. 7

    从3D numpy数组的每个2D切片中获取不同的列

  8. 8

    3d矩阵R的平均值

  9. 9

    计算 3D 矩阵之间的平均值

  10. 10

    将3d阵列中的每个矩阵切片乘以R中的单个矩阵

  11. 11

    Matlab中矩阵的运行平均值

  12. 12

    使用for循环获取矩阵中特定点的平均值

  13. 13

    使用for循环获取矩阵中特定点的平均值

  14. 14

    MATLAB:计算3D数组中每隔两页的元素平均值

  15. 15

    如何使用BigQuery获取每个记录组的最后3条记录的平均值?

  16. 16

    使用 C# 获取列表中每个元素的第一个索引的平均值

  17. 17

    如何使用numpy中的指定索引从3D矩阵中获取元素?

  18. 18

    如何使用条件参数获取SQL中的平均值

  19. 19

    获取沿3D矩阵每个维度的索引

  20. 20

    Matlab:4维矩阵中的平均值

  21. 21

    MATLAB:使用CONVN在矩阵上移动平均值

  22. 22

    如何在OpenCV中访问3D矩阵的切片

  23. 23

    使用每个平均资产的平均值的查询来查询存储在mongodb中的平均值的平均值

  24. 24

    如何在不使用matlab中查找的情况下获取逻辑矩阵的索引?

  25. 25

    如何使用索引访问切片中的元素,该索引由golang中的引用传递

  26. 26

    如何获取平均值而忽略字段的某些值

  27. 27

    如何沿列(垂直)从 2D 矩阵中切片矩阵并在 tensorflow 中创建 3D?

  28. 28

    如何在ojAlgo矩阵中沿列或行获取元素的平均值?

  29. 29

    使用整形的平均3d矩阵matlab

热门标签

归档