如何在 Matlab 中选择子矩阵(不以任何特定模式)

2023-12-13

如何在Matlab中选择子矩阵(不是任何模式)?例如,对于一个大小为10×10的矩阵,如何选择由第1、2、9行和第4、6列交集组成的子矩阵?

感谢您提供任何有用的答案!


TLDR:简答

至于你的问题,假设你有一个任意的 10×10 矩阵A。提取所需子矩阵的最简单方法是使用索引向量:

B = A([1 2 9], [4 6]);

MATLAB 中的索引

有一个有趣的文章在官方文档中,全面解释了 MATLAB 中的索引。 基本上,有几种方法可以提取值的子集,我将为您总结一下:

1. 索引向量

索引向量指示要提取的元素的索引。它们可以包含单个索引或多个索引,如下所示:

A = [10 20 30 40 50 60 70 80 90]

%# Extracts the third and the ninth element
B = A([3 9])  %# B = [30 90]

可以为每个维度单独指定索引向量,例如:

A = [10 20 30; 40 50 60; 70 80 90];

%# Extract the first and third rows, and the first and second columns
B = A([1 3], [1 2])  %# B = [10 30; 40 60]

还有两个特殊的下标:end和冒号(:):

  • end仅指示该维度中的最后一个索引。
  • 冒号只是“1:end”的简写符号。

例如,不要写A([1 2 3], [2 3]), 你可以写A(:, 2:end)。这对于大型矩阵特别有用。

2. 线性索引

线性索引通过将列连接成一个列向量并分别为元素分配索引,将任何矩阵视为列向量。例如,我们有:

A = [10 20 30; 40 50 60; 70 80 90];

我们想要计算b = A(2)。等效列向量为:

A = [10;
     40;
     70;
     20;
     50;
     80;
     30;
     60;
     90]

因此b等于 40。

特殊的冒号和end当然,也允许使用下标。是因为,A(:)转换任意矩阵A转化为列向量。

带矩阵下标的线性索引: 也可以使用另一个矩阵进行线性索引。下标矩阵简单地转换为列向量,并用于线性索引。然而,生成的矩阵始终与下标矩阵具有相同的维度。
例如,如果I = [1 3; 1 2], then A(I)和写作一样reshape(A(I(:)), size(I)).

从矩阵下标转换为线性索引,反之亦然: 为此你有sub2ind and ind2sub, 分别。例如,如果你想转换下标[1, 3]在矩阵中A(对应元素30)转化为线性索引,可以写成sub2ind(size(A), 1, 3)(当然,本例中的结果应该是 7)。

3. 逻辑索引

在逻辑索引中,下标是二进制的,其中逻辑1表示对应的元素被选中,并且0意味着它不是。下标向量必须与原始矩阵具有相同的维度或具有相同元素数量的向量。例如,如果我们有:

A = [10 20 30; 40 50 60; 70 80 90];

我们想要提取A([1 3], [1 2])使用逻辑索引,我们可以这样做:

Ir = logical([1 1 0]);
Ic = logical([1 0 1]);
B = A(Ir, Ic)

or this:

I = logical([1 0 1; 1 0 1; 0 0 0]);
B = A(I)

or this:

I = logical([1 1 0 0 0 0 1 1 0]);
B = A(I)

请注意,在后两种情况下是一维向量,如有必要,应将其重新整形回矩阵(例如,使用reshape).

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

如何在 Matlab 中选择子矩阵(不以任何特定模式) 的相关文章

  • 非模态 questdlg.m 提示

    我的代码绘制了一个图 然后提示用户是否想使用不同的参数绘制另一个图 问题是 当 questdlg m 打开时 用户无法查看绘图的详细信息 这是代码 while strcmp Cont Yes 1 Some code modifying da
  • 使用 sapply 的列表和矩阵

    我有一个也许是基本的问题 我在网上搜索过 我在读取文件时遇到问题 尽管如此 我还是按照 Konrad的建议设法读取了我的文件 我很欣赏这一点 How to get R to read in files from multiple subdi
  • MATLAB - GUI 和 OPC 服务器

    我想在 MATLAB 中设计一个图形用户界面 可以使用 MATLAB 的过程控制对象链接和嵌入 OPC 工具箱连续读取数据 我怎样才能实现这个 我已经设计了图形用户界面 但我无法将数据读入图形用户界面 就这样做 type opctoolMA
  • 在 C# 中存储矩阵值的快速且有用的方法

    我需要用 C 为 3D 引擎创建一个 4x4 矩阵类 我见过一些其他引擎将矩阵值存储在单个浮点成员变量 字段中 如下所示 float m11 m12 m13 m14 float m21 m22 m23 m24 float m31 m32 m
  • 将数据提示堆栈放在轴标签顶部,并在轴位置发生更改后更新轴标签

    此问题仅适用于 unix matlab Windows 用户将无法重现该问题 我在尝试创建位于 y 轴标签顶部的数据提示时遇到问题 下图很能说明问题 正如您所看到的 在 ylabel 附近创建的数据提示将到达 ylabel 文本的底部 而期
  • 将四元数旋转转换为旋转矩阵?

    基本上 给定一个四元数 qx qy qz qw 我如何将其转换为OpenGL旋转矩阵 我也对哪个矩阵行是 向上 向右 向前 等感兴趣 我有一个四元数的相机旋转 我需要在向量中 以下代码基于四元数 qw qx qy qz 其中顺序基于 Boo
  • 平衡两轮机器人而不使其向前/向后漂移

    我正在尝试设计一个控制器来平衡 2 轮机器人 约 13 公斤 并使其能够抵抗外力 例如 如果有人踢它 它不应该掉落 也不应该无限期地向前 向后漂移 我对大多数控制技术 LQR 滑模控制 PID 等 都很有经验 但我在网上看到大多数人使用 L
  • getappdata 在 MATLAB 中返回空矩阵

    我有一段代码 我在其中使用setappdata然后我使用以下方式调用数据getappdata即使它不为空 它也会返回一个空矩阵 我的一段简化代码如下 function edit1 Callback hObject eventdata han
  • Python 或 C 语言中的 Matlab / Octave bwdist()

    有谁知道 Matlab Octave bwdist 函数的 Python 替代品 此函数返回给定矩阵的每个单元格到最近的非零单元格的欧几里得距离 我看到了一个 Octave C 实现 一个纯 Matlab 实现 我想知道是否有人必须用 AN
  • 在 matlab 代码中使用 dll 文件

    我需要使用 Matlab 中由 dll 文件定义的函数 我有一个例子 那个家伙将 dll 转换为 mexw32 文件 但我知道我是如何做到这一点的 我尝试使用加载库但它没有创建任何文件 我怎样才能做到这一点 loadlibrary http
  • 从 MATLAB 调用 Java?

    我想要Matlab程序调用java文件 最好有一个例子 需要考虑三种情况 Java 内置库 也就是说 任何描述的here http docs oracle com javase 6 docs api 这些项目可以直接调用 例如 map ja
  • 组和平均 NumPy 矩阵

    假设我有一个任意的 numpy 矩阵 如下所示 arr 6 0 12 0 1 0 7 0 9 0 1 0 8 0 7 0 1 0 4 0 3 0 2 0 6 0 1 0 2 0 2 0 5 0 2 0 9 0 4 0 3 0 2 0 1 0
  • 我如何编写一个名为 dedbi 的 MATLAB 函数,它将输入 xtx 作为字符串并返回另一个字符串 xtxx 作为输出。

    dedbi 反转单词 即 a 将被 z 替换 b 将被 y 替换 c 将被 x 替换 依此类推 dedbi 将对大写字母执行相同的操作 即将字符串 A 替换为 Z 将 B 替换为 Y 将 C 替换为 X 依此类推 如果我给函数这个字符串 a
  • Matlab 图像数据的 hist 函数

    我是 Matlab 新手 我想制作自己的函数 与 imhist 显示图像数据的直方图 完成相同的工作 但我对此完全是新手 我不知道如何做开发这样的功能 我开始做一些东西 但它非常不完整 function output args myhist
  • 获取向量幂的有效方法

    我编写了一个代码 在数值上使用勒让德多项式直至某个高 n 阶 例如 case 8 p 6435 x 8 12012 x 6 6930 x 4 1260 x 2 35 128 return case 9 如果向量x太长这会变得很慢 我发现说之
  • 禁止 MATLAB 自动获取焦点[重复]

    这个问题在这里已经有答案了 我有以下问题 在我的 MATLAB 代码中 我使用如下语句 figure 1 更改某些数据的目标数字 问题是 在此 MATLAB 之后 系统将焦点集中在具有该图形的窗口上 当我在后台运行一个大脚本并尝试在计算机上
  • 通过多次合并相同的行向量来构建矩阵

    有没有一个matlab函数可以让我执行以下操作 x 1 2 2 3 然后基于x我想建立矩阵m 1 2 2 3 1 2 2 3 1 2 2 3 1 2 2 3 您正在寻找REPMAT http www mathworks com help t
  • 如何选择面积最大的对象?

    我用过bwconvhull检测图像的某个部分 正如您在图像中看到的那样 有许多具有特定质心的对象 我想做的是检测面积最大的物体 左起第一个大物体 并忽略其他物体 我应该遵循哪种方法 我将非常感谢您的帮助 以下是代码 由于我仍在努力 所以写得
  • 为什么这个二维指针表示法有效,而另一个则无效[重复]

    这个问题在这里已经有答案了 这里我编写了一段代码来打印 3x3 矩阵的对角线值之和 这里我必须将矩阵传递给函数 矩阵被传递给指针数组 代码可以工作 但问题是我必须编写参数的方式如下 int mat 3 以下导致程序崩溃 int mat 3
  • 朱莉娅在矩阵中查找(行,列)而不是索引

    在 Julia 中 您可以通过以下方式找到矩阵中元素的坐标 julia gt find x gt x 2 1 2 3 2 3 4 1 0 2 3 element Array Int64 1 2 4 9 这些值是正确的 但我更希望得到 row

随机推荐

  • IIS FTP 是否包含用于检测文件上传何时完成的 API?

    我想使用 IIS FTP 服务器 但我需要能够判断特定用户的文件上传何时完成 我不想依赖于直接在 Windows 中监视文件更改 因为我认为我无法判断文件上传是否真正完成或已中止并且可能稍后完成 您可以使用自定义日志记录提供程序来执行此操作
  • 循环浏览网页并复制数据

    我为一位朋友创建了这个脚本 该脚本循环浏览一个房地产网站并为她获取电子邮件地址 用于促销 该网站免费提供它们 但一次获取一个很不方便 第一个脚本将每个页面的数据转储到名为 webdump 的 txt 文件中 第二个脚本从第一个 txt 文件
  • 如何使用yaml在doctrine2中模拟继承?

    如何以yaml方式声明doctrine2继承 我在学说文档中没有找到任何与此相关的代码片段 示例或食谱文章 当我尝试以doctrine1方式进行操作时 我收到一个错误 指出该实体没有主键 Thanks 尝试使用以下方法进行简单的模型继承ex
  • NVIDIA Fermi 中的 L2 缓存

    在查看NVIDIA Fermi架构中的性能计数器名称 cuda的doc文件夹中的Compute profiler txt文件 时 我注意到对于L2缓存未命中 有两个性能计数器 l2 subp0 read sector misses和l2 s
  • 获取IP地址

    In C IPHostEntry IPHost Dns GetHostEntry Dns GetHostName for int i 0 i lt IPHost AddressList Length i textBox1 AppendTex
  • 文件锁释放时收到通知

    使用C 和Windows作为平台 我有一台相机 可以将 JPG 文件写入电脑的本地文件夹中 我想加载相机丢弃的每个文件 因此我有一个 FileSystemWatcher 它会在创建新图片时通知我 但相机在写入文件时锁定文件 所以如果我在收到
  • Android,蓝牙配对后仅通过身份验证交换信息 //

    我想通过蓝牙与仅通过身份验证配对的 2 个 Android 设备交换一些信息 我已经在 Android 开发人员端看到了 Android 聊天示例示例 它运行良好 但现在我想要在 2 个设备的蓝牙配对后 想要相互交换一些信息 就像当设备将其
  • VueJS 渲染一次到一个元素中

    是否可以只渲染一次到一个元素中 假设我有一个 contenteditable div 并且只想渲染第一个值 然后随着模型更改而停止重新渲染 这里只取初始值variable将被渲染 div variable div Use v once di
  • Vite 网络 URL 在 Laravel 应用程序中打开 Vite 开发服务器

    当我跑步时vite run dev host在我的 Laravel 项目中 我的屏幕显示如下外网网址 我的外部网址是 http 192 168 1 6 5173 Local http localhost 5173 Network http
  • 在 window.onload 事件上初始化角度

    在第三方框架中 可以通过提供将由框架添加到窗口加载的 JavaScript 代码来修改 html 页面 可以将它们的内容写入 AddIn div 元素 我如何将角度应用程序注入到这个 div 元素 HTML js 中
  • 如何在 C# 中使用 iTextSharp 获取 pdf 文件中的特定段落?

    我在我的 C winform 应用程序中使用 iTextSharp 我想获取 PDF 文件中的特定段落 这在 iTextSharp 中可能吗 是和不是 首先是没有 PDF 格式没有文本结构的概念 例如段落 句子甚至单词 它只有文本串 事实上
  • 使用javascript分隔数组中的负数和正数

    我试图在 Javascript 中分离数组的负数和正数元素 这样之后首先出现所有负数元素 然后是正数元素 每个元素都按原始顺序排列 Example 输入数组 1 2 3 2 4 输出数组 3 2 1 2 4 输入数组 3 2 1 0 4 3
  • 如何忽略 Java 应用程序外部的过期证书?

    我们有一个 Java 应用程序 需要忽略过期的自签名证书 但是我们无法修改代码来执行此操作 我想知道我们是否可以在启动时提供系统属性或环境变量 以便我们暂时忽略所有过期的证书 或者甚至更具体 并从外部提供我们希望过期的特定证书被忽略 有人有
  • nginx 中 PATH_INFO 的空值返回垃圾值

    当 nginx 设置的 PATH INFO 为空字符串时 我在从 PHP 访问它时收到一些垃圾字符 这就是我在 nginx 中设置 PATH INFO 的方法 fastcgi split path info php fastcgi para
  • Linux 的 Rijndael 替代方案

    我有一个在 C Windows 中使用 Rijndael 对象的项目 我应该用c Linux来写它 我知道我应该使用 openssl aes 但不知道如何使用 包括哪些内容 班级名称是什么 方法 我应该使用什么来代替 Rijndael cr
  • 从我的应用程序在 Whatsapp 上分享视频

    我想分享视频 我有该视频的链接 当用户想要分享该视频时 它会在应用程序中下载 现在视频未在 Whatsapp 上共享 我现在不知道如何 这是我的代码我尝试过但没有成功 Intent videoshare new Intent Intent
  • 如何处理视图模型中的 Slider.ValueChanged 事件?

    我有一个PlayerV xaml内部带有滑块的视图
  • JW Player 无法在 ie9 和 ie10 中播放 MP4 视频格式的视频

    我在我的网页中实现了 jwplayer 6player 我可以在 ie9 和 ie10 浏览器中的 jw 播放器中播放 mp3 文件 但我无法在两个浏览器中播放 MP4 文件 但在 ie8 中工作正常 下面是我使用的代码
  • 流畅的 JavaScript 动画

    这是一些代码
  • 如何在 Matlab 中选择子矩阵(不以任何特定模式)

    如何在Matlab中选择子矩阵 不是任何模式 例如 对于一个大小为10 10的矩阵 如何选择由第1 2 9行和第4 6列交集组成的子矩阵 感谢您提供任何有用的答案 TLDR 简答 至于你的问题 假设你有一个任意的 10 10 矩阵A 提取所