仅沿第三维在 3D 逻辑数组中使用 Matlab“查找”

2023-12-13

我有一个 3D 逻辑数组,例如:

A = randi([0 1],x,y,z);

其中 x、y、z 是整数。

有没有办法找到每个 (x,y) 沿第三维“z”的第一个真值?

我可以像这样循环执行:

B = zeros(x,y);

for ix = 1:x
    for iy = 1:y
        B(ix,iy) = find(A(ix,iy,:),1,'first');
    end
end

是否有一个数组操作可以让我在没有循环的情况下完成它?


这不是一个非常简单的问题。

那是因为可能没有be a true沿三维空间的任意位置。

顺便说一下,你正在做的事情可能会导致极其很难找到错误。如果某处没有真正的价值,find将返回空矩阵([])。并且,在 MATLAB 中将空矩阵分配给某些内容将delete您要分配给的数组中的该元素。

意义:

  1. B(ix,iy)将被删除
  2. 您的元素数量B将缩小 1
  3. 所有后续结果将被分配到错误的位置B
  4. 当你到达终点时A(因此现在索引超出了边界B), MATLAB会自动增长数组B以适合您的任务。

你不会明白,但所有的结果都是毫无意义的垃圾。

幸运的是,如果您对维度大于 1 的数组执行此操作,MATLAB 会发出警告,BUT,如果您使用相同的技术vectors (e.g., B是向量),MATLAB 不会警告您。

因此,至少要进行检查:

for ix = 1:x
    for iy = 1:y
        if any(A(ix,iy,:))
            B(ix,iy) = find(A(ix,iy,:), 1, 'first'); 
        end
    end
end

另请注意any可以采用第二个参数,将维度指定为“any“结束了,意思是

any(A,3)

将返回一个x×y逻辑数组,包含true如果有一个true in A沿着它的第三维,并且false否则。这可能会帮助您避免必须显式计算索引(通常,如果您更改范例,则并不真正明确需要它们)。

现在,说了这么多,你可以使用

[~, B] = max(A ~= 0, [], 3);

但你仍然需要对全零进行检查:

B(~any(A, 3)) = 0;

我想说,带有支票的循环只是so更直观的是它有我的偏好。但是,那max技术大约快 7 倍,所以当正确记录时(可能将循环作为上面注释的一部分,以及附带的单元测试),那么,为什么不呢?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

仅沿第三维在 3D 逻辑数组中使用 Matlab“查找” 的相关文章

  • 在 MATLAB 中调整 3D 矩阵(图像)的大小

    我有一个 3D 矩阵 MxNxK 想将其大小调整为 M xN xK 就像 matlab 中的 imresize 一样 我正在使用图像金字塔 但其结果不是很准确 需要一个更好的 有什么解决办法吗 你可以使用interp3 因为您想要插入 3D
  • 通过在 MATLAB 中填充当前值来扩展数组

    我有一个相当简单的问题 我只是想知道在 MATLAB 中是否有一种简单的方法可以做到这一点 即一个函数来完成此任务 而不是自己编写循环或其他东西 假设我有一个时间序列 其中 Time 是1 1 1000和数据是2 1 1 1000 我想通过
  • 如何为 HDFS 递归列出子目录?

    我在 HDFS 中递归创建了一组目录 如何列出所有目录 对于普通的 UNIX 文件系统 我可以使用以下命令来做到这一点 find path type d print 但我想为 HDFS 得到类似的东西 递归列出目录内容hadoop dfs
  • 将 matlab 中的 find() 转换为 python

    我正在将代码从 Matlab 转换为 Python Matlab中的代码为 x find sEdgepoints gt 0 sNorm lt lowT sEdgepoints x 0 两个数组的大小相同 我基本上是在创建一个掩码 I rea
  • 在 GUI MATLAB 中为静态文本赋值

    如何在 MATLAB GUI 中为静态文本赋值 双击指南中的文本打开属性编辑器 然后编辑 String 财产 您还可以设置 Tag 属性 以便您可以在 GUI 运行时对其进行编辑 如果您将标签设置为mytext 您可以将静态文本更改为 My
  • 改变眼睛图像中特定区域的颜色[Matlab]

    I am trying to change the pupil of the following image This is not a feature extraction or eye detection task I want to
  • 将 3D 矩阵与 2D 矩阵相乘

    假设我有一个AxBxC matrix X and a BxD matrix Y 是否有一种非循环方法可以将每个C AxB矩阵与Y 作为个人喜好 我希望我的代码尽可能简洁和可读 这是我会做的 尽管它不符合您的 无循环 要求 for m 1 C
  • 在 MATLAB 中将数组拆分为多个部分

    我想将数组分成相等的部分 如下所示 a 1 2 3 4 5 6 7 8 9 10 n 2 b split a n b 1 2 3 4 5 6 7 8 9 10 哪个函数可以做到这一点 尝试这个 a 1 2 3 4 5 6 reshape a
  • 连接每第 n 行

    我在矩阵中得到了一个数据集 如下所示 从 Excel 导入 matrix Cat1 1 2 3 4 Cat2 9 10 11 12 Cat3 17 18 19 20 Cat1 5 6 7 8 Cat2 13 14 15 16 Cat3 21
  • 如何去掉 Matlab 单元格中的双引号?

    我在 Matlab 中有一个单元格数组 单元格中的所有元素都表示为 something 我怎样才能创建一个数组 something 这里有两个解决方案 strrep删除所有双引号实例 同时regexprep只删除字符串开头和结尾的双引号 感
  • 隐藏图中某些图形对象的 MATLAB 图例条目

    MATLAB 图例列出了绘图中的所有内容 包括您在绘图上放置的指南 绕过这个问题的软糖就是要做的 Plot Add legend Add guidelines 然而 MATLAB 将最新的行放在前面 这意味着指南将位于显示的数据之上 丑陋且
  • 在python中访问包含matlab类的.mat文件

    我有一个从 matlab 2012b 生成的 mat 文件 它包含一个带有用户定义的 matlab 类的变量 在 python 3 3 中使用 scipy io loadmat 加载文件时 我得到以下信息 mat scipy io load
  • Matlab:通过扩展向量来扩展矩阵

    我有一个dxmxn matrix A 解释 对于每个n 有m维度向量d 我想将每个 d 维向量扩展如下 考虑一个向量v维度 d 1 2 d 它是 x 1 x 2 x d 但为了简单起见 我删除了 x 目标是延长v获得一个d d向量形式 1
  • ND 输入的 im2col 算法

    我正在尝试为输入维度 gt 2D 编写自己的 im2col 算法 目前我正在研究 Matlab im2col 的实现 但是 我找不到任何有关二维以上输入的情况的文档 如果我将 3D 张量输入到函数中 我确实会得到输出 不过我不太明白你是如何
  • 在不同长度的数组中查找相同的日期时间

    考虑以下儒略日期数组 Jday1 datenum 2011 01 01 00 00 yyyy mm dd HH MM 60 60 24 datenum 2011 12 31 23 00 yyyy mm dd HH MM Jday2 date
  • 使用 MAT2CELL 的 MATLAB

    我有以下矩阵 letter A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h ii jj k l m o p q r s t u v w x y z nu
  • R和matlab中的qr函数

    我有一个关于将 matlab 函数转换为 R 的问题 我希望有人能提供帮助 matlab 和 R 中使用的标准 QR 分解称为 qr 据我了解 用两种语言执行 qr 分解的标准方法是 Matlab Q R qr A 满足QR A R z l
  • 使用 sprintf 打印元素数量可变的向量

    在下面的代码中 我可以打印向量中的所有元素item用空格分隔为 item 123 456 789 sprintf d d d item ans 123 456 789 我怎样才能做到这一点而不必输入那么多 d作为元素的数量item 最简单的
  • 如何绘制 NxN 圆数组?

    我想绘制一个 NxN 的圆数组 为了形象化 我附上了我想要实现的目标的图像 我是 MatlLab 的新手 所以我尝试先绘制一个圆 下面是示例代码 n 2 10 size of mask M zeros n I 1 n x I n 2 mas
  • 如何将 Simulink 编码器编译器版本设置为支持 C++11 的版本?

    我正在尝试将代码合并到 Simulink 及其嵌入式编码器中 该代码使用 C 11 扩展 跑步mex setup c 给出这个输出 mex setup c MEX configured to use Xcode Clang for C la

随机推荐

  • Google Material图表柱形图(条形图)自定义列颜色不起作用

    我想画一个简单的柱形图 in HTML JavaScript using google chart 我用过Google materiel chart CDN绘制柱形图有 4 行 4 种不同颜色 我尝试了很多选择 但没有一个能正常工作 当我使
  • 将 .NET Maui Preview 14 发布到 App Store 和 Google Play

    是否可以将 NET Maui 应用程序发布到 Apple AppStore 和 Google Play 还是我们需要等到 NET Maui 最终确定 正如评论中已经指出的那样 您绝对可以 但由于明显的原因并未正式推荐 不过 我确实知道现在商
  • 使用itext在pdf页脚中创建包含2行的表格

    您好 我想添加 2 行页脚 第一行将包含带有背景颜色的文档名称 第二行将有版权说明 我尝试使用 ColumnText 创建 但我无法设置行的背景颜色 只有文本获取背景颜色 有什么办法可以实现这一点吗 我花了一整晚的时间来寻找解决方案 但没有
  • 如何求逆排列?

    假设我有一个未知向量v 以及一个排列p 我该如何重建v from v p and p 一个等效的问题是找到一个排列q这样p q 1 2 n 由于这将在紧密循环中运行 因此我需要将答案矢量化 并且高效 为了找到逆排列 我通常使用 q sort
  • 在Android中使用静态方法?

    我已经在 Android 中制作了一些应用程序 并注意到我经常使用静态方法 例如我有一个类扩展PreferenceFragment 在此 PreferenceFragment 中我设置了一个onClick事件在Button Button b
  • INSERT,并获取自增值

    考虑下表 create table language id integer generated always as identity START WITH 1 INCREMENT BY 1 name long varchar constra
  • 在 PHP 中迭代嵌套数组

    我在此链接上有一个嵌套数组阵列样本 我正在使用下面的代码来解析它 但第二次和深度之外它什么也没有返回 但是尝试使用递归函数 printAllValues ArrXML function printAllValues arr keys arr
  • android中没有创建数据库

    在我的应用程序中 活动运行良好 但未创建数据库 logcat 中也没有错误 主要活动类别 package com example testdb import android os Bundle import android app Acti
  • vba sumifs单列中的多个条件

    假设我在 A 列和 B 列中有这样的内容 A 5 A 1 3 A 2 2 A 3 3 A 4 4 我想做 Application SumIfs range b b range b b A A 2 但这不起作用 数组值 我希望不经历 EVAL
  • 计算 MongoDB 中另一个字段分组的文档中某个字段中字符串实例的数量?

    我有一个特定的用例 我正在尝试找到一种方法在一个聚合管道中完成它 并且最好不需要对任何数据值进行硬编码 我想根据一个属性对文档进行分组 并查看文档中特定字段的值计数 示例数据 flightNum DL1002 status On time
  • Cocos2d 获取当前时间(以毫秒为单位)

    我尝试用谷歌搜索 但仍然找不到最佳答案 我想要的很简单 我只想获取当前时间 以毫秒为单位 我怎样才能在 cocos2d 中做到这一点 首先 一个类变量 CGFloat gameTime 然后在你的类中初始化 self scheduleUpd
  • 简单的xml添加属性

    当我使用 PHP 在 XML 中添加新元素时 如何设置属性 我的PHP代码是这样的
  • 在C中将int数组更改为float数组

    有谁知道如何将整数数组转换为浮点数组 你的问题措辞不好 但是 假设您已经声明了整数数组 您可以尝试如下操作 instantiate float array float fArray sizeOfIntArray step through e
  • 阅读 SICP 时使用什么解释器? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我正在阅读 SICP 书 网址为http mitpress mit edu sicp 要运行示例代码 我应该使用哪个解释器 我考虑过 Eclipse 的 Dandelion Lisp
  • 修改j2me midlet

    我想更改开源应用程序中的一些字符串 测试目的 所以我使用 jad 反编译器反编译我的应用程序 原始类文件http dl dropbox com u 32657135 YourTube class 发出命令Jad exe Yourtube j
  • 具有多个规则的 jQuery 表单验证插件

    我正在使用 jQueryValidation 插件 Problem 我想在一个输入字段中使用多个模式规则 例如 form validate rules email required true email true password requ
  • 每季度生成日期序列

    我想生成一个日期序列one quarter间隔 具有开始日期和结束日期 我有以下代码 gt seq as Date 1980 12 31 as Date 1985 06 30 by quarter 1 1980 12 31 1981 03
  • 在手机间隙运行 https 请求

    我正在iPhone中开发phone gap应用程序 我想使用JQuery getJSON url function 访问https json 请求 但仅在应用程序中它不会返回任何内容 但在正常的移动Safari中它工作正常 尽管它在phon
  • 如何使用 watchOS 2 SDK 构建应用程序

    在上次提交申请时 我们收到了此警告 WatchKit 支持无效 从 2018 年 4 月 1 日开始 提交到 Apple Watch App Store 的所有应用程序都必须使用 watchOS 2 SDK 或更高版本构建 检查您的部署目标
  • 仅沿第三维在 3D 逻辑数组中使用 Matlab“查找”

    我有一个 3D 逻辑数组 例如 A randi 0 1 x y z 其中 x y z 是整数 有没有办法找到每个 x y 沿第三维 z 的第一个真值 我可以像这样循环执行 B zeros x y for ix 1 x for iy 1 y