在 MATLAB 中执行此类 Python 向量化赋值的等效方法是什么?

2024-01-21

我正在尝试将这行代码从 Python 转换为 MATLAB:

new_img[M[0, :] - corners[0][0], M[1, :] - corners[1][0], :] = img[T[0, :], T[1, :], :]

所以,很自然地,我写了这样的东西:

new_img(M(1,:)-corners(2,1),M(2,:)-corners(2,2),:) = img(T(1,:),T(2,:),:);

但当它到达该行时,它给了我以下错误:

请求的 106275x106275x3 (252.4GB) 数组超出最大数组大小 偏爱。创建大于此限制的数组可能需要很长时间 时间并导致 MATLAB 变得无响应。请参阅数组大小限制或 首选项面板以获取更多信息。

这让我相信它没有正确分配事物。 Img 最多是 1000 × 1500 RGB 图像。相同的代码在 Python 中运行时间不到 5 秒。如何像 MATLAB 中第一行代码那样进行向量赋值?

顺便说一下,为了避免这篇文章太长,我没有粘贴所有代码行。如果我需要添加任何其他内容,请告诉我。

Edit:以下是我希望我的代码执行的操作的解释(基本上,这就是 Python 代码执行的操作):

考虑这行代码。这不是真正的 MATLAB 代码,我只是想解释一下我想要做什么:

A([2 3 5], [1 3 5]) = B([1 2 3], [2 4 6])

它的解释如下:

A(2,1) = B(1,2)
A(3,1) = B(2,2)
A(5,1) = B(3,2)
A(2,3) = B(1,4)
A(3,3) = B(2,4)
A(5,3) = B(3,4)
...
...
...

相反,我希望它被这样解释:

A(2,1) = B(1,2)
A(3,3) = B(2,4)
A(5,5) = B(3,6)

当你这样做时A[vector1, vector2]在 Python 中,您可以对集合建立索引:

A[vector1[0], vector2[0]]
A[vector1[1], vector2[1]]
A[vector1[2], vector2[2]]
A[vector1[3], vector2[3]]
...

在 MATLAB 中,类似的A(vector1, vector2)相反,索引该集合:

A(vector1(1), vector2(1))
A(vector1(1), vector2(2))
A(vector1(1), vector2(3))
A(vector1(1), vector2(4))
...
A(vector1(2), vector2(1))
A(vector1(2), vector2(2))
A(vector1(2), vector2(3))
A(vector1(2), vector2(4))
...

也就是说,您将获得索引的每个组合。您应该将其视为由两个向量中指定的行和列组成的子数组。

要实现与 Python 代码相同的功能,您需要使用线性索引:

index = sub2ind(size(A), vector1, vector2);
A(index)

因此,您的 MATLAB 代码应该执行以下操作:

index1 = sub2ind(size(new_img), M(1,:)-corners(2,1), M(2,:)-corners(2,2));
index2 = sub2ind(size(img), T(1,:), T(2,:));

% these indices are for first 2 dims only, need to index in 3rd dim also:
offset1 = size(new_img,1) * size(new_img,2);
offset2 = size(img,1) * size(img,2);
index1 = index1.' + offset1 * (0:size(new_img,3)-1);
index2 = index2.' + offset2 * (0:size(new_img,3)-1);

new_img(index1) = img(index2);

中间块在这里所做的是沿着第三维为相同元素添加线性索引。如果ii是第一个通道中元素的线性索引,则ii + offset1是第二个通道中相同元素的索引,并且ii + 2*offset1是第三个通道中相同元素的索引,等等。所以在这里我们生成所有这些矩阵元素的索引。这+操作正在执行隐式单例扩展(Python 中称之为“广播”)。如果您有旧版本的 MATLAB,这将失败,您需要替换它A+B with bsxfun(@plus,A,B).

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

在 MATLAB 中执行此类 Python 向量化赋值的等效方法是什么? 的相关文章

  • 为什么 Mypy 在 __init__ 中分配已在类主体中进行类型提示的属性时不给出键入错误?

    这是我的示例 python 文件 class Person name str age int def init self name age self name name self age age p Person 5 5 但当我跑步时myp
  • 导入错误:无法导入名称“FFProbe”

    我无法获取ffprobe包 https github com simonh10 ffprobe在 Python 3 6 中工作 我使用 pip 安装它 但是当我输入import ffprobe it says Traceback most
  • 从所有数据帧列中删除子字符串

    我有一个单词列表 大约 1000 个单词 我称之为负面单词 CAST ARTICLES SANITARY JAN CLAUSES SPECIAL ENDORSEMENT 我很快就会用这个单词列表制作一个数据框 我还有一个数据框 看起来像 F
  • 从内存地址创建python对象(使用gi.repository)

    有时我需要调用仅存在于 C 中的 gtk gobject 函数 但返回一个具有 python 包装器的对象 之前我使用过基于 ctypes 的解决方案 效果很好 现在我从 PyGtk import gtk 切换到 GObject intro
  • 如何通过 python 中的函数运行列表?

    我试图通过我创建的函数运行我的列表 但不断收到错误 我不知道出了什么问题 温度 F temp f 19 21 21 21 23 功能 def fahrToCelsius tempFahrenheit return tempFahrenhei
  • Python Requests 库重定向新 url

    我一直在浏览 Python 请求文档 但看不到我想要实现的任何功能 在我的脚本中我设置allow redirects True 我想知道该页面是否已重定向到其他内容 新的 URL 是什么 例如 如果起始 URL 为 www google c
  • Python3将模块从文件夹导入到另一个文件夹

    我的结构字典是 mainFolder folder1 init py file1 py file2 py folder2 init py file3 py file4 py setup py init py 我需要将 file4 py 从f
  • 会话数据库表清理

    该表是否需要清除或者由 Django 自动处理 Django 不提供自动清除功能 然而 有一个方便的命令可以帮助您手动完成此操作 Django 文档 清除会话存储 https docs djangoproject com en dev to
  • 列表推导式和 for 循环中的 Lambda 表达式[重复]

    这个问题在这里已经有答案了 我想要一个 lambda 列表 作为一些繁重计算的缓存 并注意到这一点 gt gt gt j for j in lambda i for i in range 10 9 9 9 9 9 9 9 9 9 9 Alt
  • 了解 Python 2.7 中的缩进错误

    在编写 python 代码时 我往往会遇到很多缩进错误 有时 当我删除并重写该行时 错误就会消失 有人可以为菜鸟提供 python 中 IndentationErrors 的高级解释吗 以下是我在玩 CheckIO 时收到的最近 inden
  • 使用 python 脚本更改 shell 中的工作目录

    我想实现一个用户态命令 它将采用其参数之一 路径 并将目录更改为该目录 程序完成后 我希望 shell 位于该目录中 所以我想实施cd命令 但需要外部程序 可以在 python 脚本中完成还是我必须编写 bash 包装器 Example t
  • Flymake的临时文件可以在系统临时目录下创建吗?

    我目前正在使用以下代码在 emacs 中连接 Flymake 和 Pyflakes defun flymake create temp in system tempdir filename prefix make temp file or
  • pandas groupby 操作缺少数据

    在 pandas 数据框中 我有一列如下所示 0 M 1 E 2 L 3 M 1 4 M 2 5 M 3 6 E 1 7 E 2 8 E 3 9 E 4 10 L 1 11 L 2 12 M 1 a 13 M 1 b 14 M 1 c 15
  • 获取多个同名请求参数

    我的问题是给定的代码 from flask import Flask request app Flask name app route def hello return str request values get param None a
  • 如何将 URL 添加到 Telegram Bot 的 InlineKeyboardButton

    我想制作一个按钮 可以从 Telegram 聊天中在浏览器中打开 URL 外部超链接 目前 我只开发了可点击的操作按钮 update message reply text Subscribe to us on Facebook and Te
  • 数据损坏 C++ 和 Python 之间的管道

    我正在编写一些代码 从 Python 获取二进制数据 将其通过管道传输到 C 对数据进行一些处理 在本例中计算互信息度量 然后将结果通过管道传输回 Python 在测试时 我发现如果我发送的数据是一组尺寸小于 1500 X 1500 的 2
  • 如何在引发异常时将变量传递给异常并在异常时检索它?

    现在我只有一个空白的异常类 我想知道如何在引发变量时给它一个变量 然后在 try except 中处理它时检索该变量 class ExampleException Exception pass 为其构造函数提供一个参数 将其存储为属性 然后
  • 从给定的项目列表创建子列表

    我首先要说的是以下问题不是为了家庭作业目的即使因为我几个月前就完成了软件工程师的工作 无论如何 今天我正在工作 一位朋友向我询问了这个奇怪的排序问题 我有一个包含 1000 行的列表 每行代表一个数字 我想创建 10 个子列表 每个子列表都
  • 如何有效地比较 pandas DataFrame 中的行?

    我有一个 pandas 数据框 其中包含雷击记录以及时间戳和全球位置 格式如下 Index Date Time Lat Lon Good fix 0 1 20160101 00 00 00 9962692 7 1961 60 7604 1
  • matlab中求和函数句柄

    Hi我试图对两个函数句柄求和 但它不起作用 例如 y1 x x x y2 x x x 3 x y3 y1 y2 我收到的错误是 对于 function handle 类型的输入参数 未定义函数或方法 plus 这只是一个小例子 实际上我实际

随机推荐

  • .net4 中仍然存在内存泄漏 - 将内存 BitmapImage 绑定到 Image-Source

    我知道过去曾在这里提出过非常类似的问题 但都没有解决我的问题 我将内存中的图像加载到 BitmapImage 中 private static BitmapImage LoadImage byte imageData if imageDat
  • mini-css-extract-plugin 模块的 chunkFilename 的用途是什么?

    我现在使用 mini css extract plugin 模块 并设置其 chunkFilename 值并确保值 id css 通过运行它 但是 我看不到该文件 参考如下 https webpack js org plugins mini
  • JavaScript 新函数作用域 ReferenceError

    有什么办法可以让下面的代码工作吗 function var n abc new Function return alert n 如果我在浏览器中运行代码结果是 未捕获的引用错误 n 未定义 另外 我还需要在 新函数 中访问一些其他变量 例如
  • 将图像中的所有白色像素转换为黑色像素

    我有这张图片rand walk 2 png 我想将所有白色像素转换为黑色像素 这样就有了一张图片红色随机游走在黑色背景上 这意味着我不能仅仅反转图像的颜色 我当前的代码只是找到白色像素并将它们设置为黑色 from PIL import Im
  • ADO.NET 中具有 GROUP BY 功能的聚合函数

    这是一个更直接的问题 源于较早的问题我之前有过更普遍的问题 https stackoverflow com questions 828356 allowing a user to create a custom query of a tab
  • 带有自定义图块的动态谷歌地图可防止重复平移

    我有一个动态图块集 我不想允许平移超出其范围 下面的代码让我很接近 但用户仍然可以在严格边界之外水平滚动 因为它使用地图中心进行比较 var strictBounds new google maps LatLngBounds new goo
  • 无法授予对证书、标识符和配置文件的访问权限

    我购买了一个苹果开发者帐户 我正在尝试添加一个用户作为管理员并授予对证书 标识符和配置文件的访问权限 但该复选框已禁用 我无法勾选它 我认为您已经创建了 Apple 开发者帐户个人 要将其他用户添加为具有 证书 标识符和配置文件 访问权限的
  • Rails,Ruby,如何对数组进行排序?

    在我的 Rails 应用程序中 我正在创建一个数组 如下所示 messages each do message list lt lt id gt message id title gt message title time ago gt m
  • WIF滑动会话重新认证

    我已经在依赖方应用程序中实现了滑动会话 如中所述WIF 4 5 的滑动会话 http www cloudidentity com blog 2013 05 08 sliding sessions for wif 4 5 就目前而言 这很有效
  • 创建带有任何参数的 std::functions 的 unordered_map ?

    我正在尝试创建一个无序地图std functions 其中键是一个字符串 您将在其中查找要调用的函数 而该函数就是值 我写了一个小程序 include
  • 多边形不是封闭的

    我注意到 当使用绘图管理器绘制多边形时 它们没有关闭 即最后一个点到第一个点没有坐标 我知道 Google Maps API v3 会自动关闭多边形 但 Google Earth Google Static Maps API 或任何其他软件
  • 在 iOS 8 框架中使用类别

    我正在尝试使用框架在应用程序和扩展之间共享一些代码 大多数情况下 这是有效的 但我有几个类别似乎无法在扩展中正确加载 例如 我在 NSString 上有一个类别来反转目标字符串 但是当我尝试在扩展中使用该选择器时 我的代码会陷入 无法识别的
  • 在 JS 中格式化 Date()

    我有脚本然后需要获取这种格式的日期和时间08 25 2017 1 54 PM 我为日期编写代码 这里是 document ready function var dateNow new Date var dd dateNow getDate
  • 如何在React中给组件添加滚动条?

    我在 SPA 中使用带有 3 列的网格系统 左右列表包含占用 100 视口高度的组件 中间列包含一个长列表 并且想在中间组件中添加一个滚动条 我尝试用几个不同的滚动条组件编写中间组件 但没有任何效果 我最终总是看到一个主页滚动 当进一步向下
  • 绘图程序

    我倾向于成为一个视觉思考者 因此 如果我可以想象程序中的数据流 那么我就可以更好地理解其中发生的事情 而不是阅读正在发生的事情的文本故事 伪代码 有没有一种方法可以直观地表示变量和对象流经函数以及被函数更改的方式 最好是在小规模 单个函数内
  • 如何使用 NSUserDefaults 在 Swift 中保存 Int 数组?

    这是一个数组 var myArray 1 它包含Int values 这就是我保存数组的方式NSUserDefaults 这段代码似乎工作正常 NSUserDefaults standardUserDefaults setObject my
  • 关闭后如何清除模态中的反应状态?

    我有一张显示产品详细信息的产品卡 底部有一个 编辑 button When clicked它显示了一个预填充的模态input字段 可以编辑然后保存 模态框也可以关闭而不保存 但已编辑输入字段 我的问题是 当用户编辑字段时 然后关闭模式 不保
  • iOS 16 模拟器:在模拟器中运行应用程序会导致“.xpc 错误”

    更新到 macOS 13 0 Beta 并安装 Xcode 14 0 Beta 后 我们运行一个应用程序 将目标操作系统设置为 16 出现以下错误 手动启动时 iPhone 模拟器也不会启动 这里是描述问题的详细错误消息 Details T
  • 将镜像从 ECR 拉取到 Kubernetes 部署文件

    我在从 AWS ECR 存储库中提取 docker 映像时遇到了这个问题 之前我使用过 kubectl create secret docker registry regcred docker server https index dock
  • 在 MATLAB 中执行此类 Python 向量化赋值的等效方法是什么?

    我正在尝试将这行代码从 Python 转换为 MATLAB new img M 0 corners 0 0 M 1 corners 1 0 img T 0 T 1 所以 很自然地 我写了这样的东西 new img M 1 corners 2