【问题标题】:Use the command if any in a 3D array in Matlab如果在 Matlab 中的 3D 数组中有任何命令,请使用该命令
【发布时间】:2015-05-28 12:08:21
【问题描述】:

我有一个这样的 n×m×3 多维数组:

val(:,:,1) =

 1     0     1     1     1
 1     0     1     1     1
 1     0     1     1     1
 1     1     1     1     1
 1     1     1     0     1
 1     1     1     0     1
 1     0     1     1     1

val(:,:,2) =

 1     1     1     1     1
 1     1     1     0     1
 1     1     1     0     1
 1     0     1     1     1
 1     0     1     1     1
 1     0     1     1     1
 1     1     1     1     1

val(:,:,1) =

 1     1     0     1     1
 1     1     0     1     1
 1     1     1     1     1
 1     0     1     1     1
 1     0     1     1     0
 1     1     1     1     0
 1     1     1     1     0

我想对 Matlab 说:对于每一行,检查是否有任何元素为 0,然后创建一个 n×1×3 矩阵(或 3 个 n×1 矩阵)类型:

val(:,:,1) =

 1
 0
 0
 1
 1

其中 0 对应于“是,该行的至少一个元素是 0”,而 1 对应于“否,该行的每个元素都是 1”。

我试过了

for a = 1:n
   for b = 1: 3
       if any (A,2) ==0
       B (n,1,3)= 0;
       else 
       B (n,1,3)= 1;
       end
   end
end

或者只是:

B= any(A,2) ==0

但它不起作用,我总是得到一个全零的 (n,1,3) 数组。

非常感谢!

【问题讨论】:

  • 您尝试过使用any 函数...?

标签: arrays matlab multidimensional-array any


【解决方案1】:

你要找的是

~all(val, 2)

你可以使用

any(~val, 2)

如果你坚持使用any

一些 MATLAB 函数接受一个参数,该参数指定您要将它们应用到哪个维度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多