Matlab 矩阵中非连续预定义值的出现顺序

2024-01-09

我有一个 9 列矩阵,如下所示:

X   X   X   X   X   X   0   2   0
X   X   X   X   X   X   6   2   0
X   X   X   X   X   X   6   2   0
X   X   X   X   X   X   7   2   0
X   X   X   X   X   X   8   2   0
X   X   X   X   X   X   8   2   0
X   X   X   X   X   X   0   2   0
X   X   X   X   X   X   0   2   0
X   X   X   X   X   X   0   2   0
X   X   X   X   X   X   6   2   0
X   X   X   X   X   X   8   2   0
X   X   X   X   X   X   7   2   0
X   X   X   X   X   X   8   2   0
X   X   X   X   X   X   8   2   0
X   X   X   X   X   X   1   2   0
X   X   X   X   X   X   1   2   0
X   X   X   X   X   X   2   2   0
X   X   X   X   X   X   2   2   0
X   X   X   X   X   X   0   2   0
X   X   X   X   X   X   1   2   0
X   X   X   X   X   X   2   2   0
X   X   X   X   X   X   2   2   0
X   X   X   X   X   X   2   2   0
X   X   X   X   X   X   2   2   0
X   X   X   X   X   X   2   2   0
X   X   X   X   X   X   2   2   0
X   X   X   X   X   X   2   2   0
X   X   X   X   X   X   8   2   0
X   X   X   X   X   X   0   2   0
X   X   X   X   X   X   1   2   0

我使用 X 作为本示例中不相关的列的值。 第 9 列最初仅包含零。 我想要实现的是更改第 9 列中的值,对应于预定义值的出现顺序(而所有其他值保持为 0)。

在脚本中,我应该能够指定多个值(在下面的结果矩阵中:0、1 和 2),每次它们(非连续地)出现在列中时都应该逐步计数。这应该是结果:

X   X   X   X   X   X   0   2   1
X   X   X   X   X   X   6   2   0
X   X   X   X   X   X   6   2   0
X   X   X   X   X   X   7   2   0
X   X   X   X   X   X   8   2   0
X   X   X   X   X   X   8   2   0
X   X   X   X   X   X   0   2   2
X   X   X   X   X   X   0   2   2
X   X   X   X   X   X   0   2   2
X   X   X   X   X   X   6   2   0
X   X   X   X   X   X   8   2   0
X   X   X   X   X   X   7   2   0
X   X   X   X   X   X   8   2   0
X   X   X   X   X   X   8   2   0
X   X   X   X   X   X   1   2   3
X   X   X   X   X   X   1   2   3
X   X   X   X   X   X   2   2   4
X   X   X   X   X   X   2   2   4
X   X   X   X   X   X   0   2   5
X   X   X   X   X   X   1   2   6
X   X   X   X   X   X   2   2   7
X   X   X   X   X   X   2   2   7
X   X   X   X   X   X   2   2   7
X   X   X   X   X   X   2   2   7
X   X   X   X   X   X   2   2   7
X   X   X   X   X   X   2   2   7
X   X   X   X   X   X   2   2   7
X   X   X   X   X   X   8   2   0
X   X   X   X   X   X   0   2   8
X   X   X   X   X   X   1   2   9

在本例中,第 7 列中应计数的值是:values = [0 1 2](顺序并不重要:[1 2 0] 应给出相同的结果)。

在示例最终矩阵中,值 0(“values”中指定的值之一)出现在第一行,因此它变为 1(即“第一次“values”中的一个值出现在第 7 列中”)在第 9 列中,然后是其他值,并且第 9 列不会更改(仍然是 0)。然后出现 0,因此第 9 列中添加了排名 2(“values”中指定的一个值的第 2 次出现)。0 在连续行中出现 3 次,如果连续出现,第 9 列的值保持不变排名(例如 2)。依此类推,如示例所示。

我已经有以下代码,我根据以下代码进行了更改上一个问题 https://stackoverflow.com/questions/20597615/order-of-appearance-of-previously-defined-values-in-a-matrix-in-matlab/:

ALLphases(:,9) = 0; %CREATE COLUMN 9 WITH VALUE 0 everywhere

session = 2; 
values = [0 1 2]; 

for ii = 1:numel(values)
    first(ii) = find(ALLphases(ALLphases(:,8)==session,7)==values(ii),1);
end
[~, use_values] = sort(first);
[~, use_values] = sort(use_values);
for ii = 1:numel(values)
    ALLphases(ALLphases(:,8)==session & ALLphases(:,7)==values(ii), 9) = use_values(ii);
end

这几乎就在那里,但我需要它逐步计算所有值,即使它们之前出现过。

请注意,仅当第 8 列等于 2(在上面的代码中称为“会话”)时,才会基于第 7 列更改第 9 列中的值。这是与我的特定矩阵的组织相关的要求。

我怎样才能实现我的最终目标?


我认为这可以满足您的需求,没有循环:只需一些索引和diff。 (不过不确定我是否正确处理了第 8 行):

matrix = [zeros(6,10); 0 3 4 1 1 0 2 6 1 2; 2*ones(1,10)].'; %'// example data
values = [0 1 2]; %// example data

ind = ismember(matrix(:,7), values) & matrix(:,8)==2; %// detect values
ind2 = ind & logical(diff([inf; matrix(:,7)])) ; %// detect start of runs   
[ind3, ~, fill] = find(cumsum(ind2).*ind); %// fill at ind, increasing as per ind2
matrix(ind3,9) = fill; 

结果示例:

>> matrix

matrix =

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

Matlab 矩阵中非连续预定义值的出现顺序 的相关文章

  • 检查Matlab中脚本需要使用的函数

    我有一个别人写的代码包 我正在运行一个脚本 它调用一些函数 这些函数又调用更多函数 等等 我想获取不是 MATLAB 内置函数但属于包的一部分的函数列表 我尝试使用matlab codetools requiredFilesAndProdu
  • 计算带状矩阵的 colCumsums 的更快替代方案

    我是 R 和 stats 的新手 在我当前工作的领域中 我需要以独特的方式计算累积列总和 最初提供宽度为 b 行数为 n 的方带矩阵 例如 n 8 且 b 3 0 1 2 7 0 0 0 0 0 0 3 6 7 0 0 0 0 0 0 3
  • 用二进制数、常规数字和格雷编码填充矩阵

    我有一个包含 1 s 或 0 s 的矩阵 用于创建二进制数 其宽度为n 对于 n 2 和 n 3 它看起来像 00 000 01 001 10 010 11 011 100 101 110 111 等等 现在我正在使用以下代码来生成它 in
  • Cuda:最小二乘求解,速度较差

    最近 我使用Cuda编写了一个名为 正交匹配追踪 的算法 在我丑陋的 Cuda 代码中 整个迭代需要 60 秒 而 Eigen lib 只需 3 秒 在我的代码中 矩阵 A 是 640 1024 y 是 640 1 在每一步中 我从 A 中
  • MATLAB 滚动图

    我有一个脑电图数据库 我想绘制它 数据库是一个19 1000 134的矩阵 其中 19 是通道数 在第一种方法中 我只使用一个渠道 1000 个样本大小 采样率为 500 Hz 时为 1000 个点 即 2 秒数据 134 epochs的数
  • 2D 矩阵和重载operator() / 丑陋的语法

    我在我的一个项目中使用二维矩阵 这就像建议的那样C 常见问题精简版 http www parashift com c faq lite operator overloading html faq 13 10 巧妙的是你可以像这样使用它 in
  • MATLAB 中最有效的矩阵求逆

    在 MATLAB 中计算某个方阵 A 的逆矩阵时 使用 Ai inv A should be the same as Ai A 1 MATLAB 通常会通知我这不是最有效的求逆方法 那么什么是更有效率的呢 如果我有一个方程系统 可能会使用
  • 如何使用 numpy 从一维数组创建对角矩阵?

    我正在使用 Python 和 numpy 来做线性代数 我表演了numpy对矩阵进行 SVD 以获得矩阵 U i 和 V 然而 i 矩阵表示为 1 行的 1x4 矩阵 IE 12 22151125 4 92815942 2 06380839
  • MATLAB - 如何将子图一起缩放?

    我在一张图中有多个子图 每个图的 X 轴是相同的变量 时间 每个图上的 Y 轴都不同 无论是它所代表的内容还是数据的大小 我想要一种同时放大所有图的时间尺度的方法 理想情况下 可以在其中一张图上使用矩形缩放工具 并让其他图相应地更改其 X
  • 如何使用 Julia 查找矩阵中的连通分量

    假设我有以下矩阵 此处用 Julia 语言定义 mat 1 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 1 将一组值为 1 的相邻元素视为一个 分量 如何识别该矩阵有 2 个分量以及每个分量由哪些顶点组成 对于矩
  • 使用矩阵代数来操作字符串:可行吗?

    我正在尝试使用矩阵代数来操作字符串 这意味着能够使用字符串或字符串数 组的串联和粘贴来实现多个类似矩阵的结构 我之前尝试在 R 上实现这个东西 但这是不可能的 因为矩阵只能有一维条目 我希望足够的与语言无关和抽象 但为了清楚起见 我将使用类
  • 使用 MATLAB 进行线路跟踪

    我有一个图像 我想将其转换为逻辑图像 包括线条为黑色 背景为白色 当然 可以使用阈值方法来实现这一点 但我不想使用这种方式来做到这一点 我想通过使用线路跟踪方法或类似的方法来检测它 这是关于视网膜血管检测的 我找到了一个article ht
  • MATLAB:具有复数的 printmat

    我想使用 MATLAB 的printmat显示带有标签的矩阵 但这不适用于复数 N 5 x rand N 1 y rand N 1 z x 1i y printmat x y z fftdemo N 1 2 3 4 5 x y x iy O
  • 如何将二进制值列表转换为int32类型?

    我在 MATLAB 工作区中有一个小端格式的二进制数列表 我想将它们转换为 int32 a是由 0 和 1 组成的双向量 如下所示 a 0 0 0 1 1 0 0 1 1 1 1 0 1 0 1 0 0 0 0 1 1 0 0 0 1 1
  • 缓存友好的矩阵移位功能

    我想将二维方阵的第一行移到最后一行 所以如果我有一个像A这样的矩阵 我想要得到B 我可以使用两个简单的 for 循环来做到这一点 例如 void shift int M int N int A M N int i j temp for i
  • 我需要转义该 MATLAB 字符串中的字符吗?

    我想在 MATLAB 中调用以下 bash 命令 grep Up to test linux vision1 1 log awk print 7 I use system 在MATLAB中 但结果有错误 gt gt status strin
  • 更快的四元数向量乘法不起作用

    我的数学库需要一个更快的四元数向量乘法例程 现在我正在使用规范v qv q 1 它产生的结果与向量乘以由四元数组成的矩阵相同 所以我对它的正确性充满信心 到目前为止 我已经实现了 3 种替代 更快 的方法 1 我不知道我从哪里得到这个 v
  • 访问图像的 Windows“标签”元数据字段

    我正在尝试进行一些图像处理 所以现在我正在尝试读取图像 exif 数据 有 2 个内置函数可用于读取图像的 exif 数据 问题是我想读取图像标签 exifread and imfinfo这两个函数都不显示图像标签 Is there any
  • 如何在文本集中创建所有字符组合?

    例如 我有这样的文本集 第 1 栏 a b 第 2 栏 l m n 第 3 栏 v w x y 我想将它们组合起来以获得如下输出 alv alw alx aly amv amw amx amy 这将输出 24 种文本组合 如果我只使用前两列
  • 如何将 numpy.matrix 提高到非整数幂?

    The 运算符为numpy matrix不支持非整数幂 gt gt gt m matrix 1 0 0 5 0 5 gt gt gt m 2 5 TypeError exponent must be an integer 我想要的是 oct

随机推荐

  • 如何获取 Lucene 索引中文档子集的顶级术语?

    我知道可以获取 Lucene 索引中的顶级术语 但是有没有办法根据 Lucene 索引的子集获取顶级术语 IE 特定日期范围内的文档索引中最重要的术语是什么 理想情况下 应该有一个实用程序可以执行此操作 但我不知道有这样的实用程序 然而 以
  • 根据字符集对单词进行聚类

    假设有一个单词集 我想根据它们的字符包 多重集 对它们进行聚类 例如 茶 吃 阿爸 阿阿 你好 将被聚类成 茶 吃 abba aabb 你好 abba and aabb聚集在一起是因为它们具有相同的字符包 即两个a和两个b 为了提高效率 我
  • 适用于 Windows 和 Mac 的 Node.js — 正斜杠、反斜杠修正

    有没有一种方法可以纠正从 Windows 到 Linux 和 Mac 的 Node js 中有关反斜杠与正斜杠的差异 Windows 在调用以下位置时需要反斜杠git bash 而 Mac Linux 需要正斜杠 我正在与 Mac 和 Wi
  • 如何将支持库小吃栏文本颜色设置为 android:textColor 以外的颜色?

    因此 我开始在设计支持库中使用新的 Snackbar 但我发现当您在主题中定义 android textColor 时 它会应用于 Snackbar 的文本颜色 如果您的主要文本颜色是深色 这显然是一个问题 有谁知道解决这个问题的方法或者对
  • 带有 ngmodel 的 Angular 2 动态表单示例导致“表达式在检查后已更改”

    我正在寻找使用这个example https angular io docs ts latest cookbook dynamic form htmlAngular 文档中提供了与 ngmodel 结合使用动态表单的功能 以便动态表单控件可
  • 路由器 waitOn 在每次渲染时等待订阅

    我有一条路线waitOn返回一个钩子Meteor subscribe 每次触发路线时 我都会看到我的旋转器loadingTemplate在查看实际数据之前先简单介绍一下 我本以为我只需要等待订阅下载一次 即第一次 如果我做错了 请提出更好的
  • 如何使用 Files.lines(...).forEach(...) 读取文件?

    我目前正在尝试从我拥有的纯文本文件中读取行 我在另一个 stackoverflow 上发现 用Java读取纯文本文件 https stackoverflow com questions 4716503 best way to read a
  • Angularjs ui 路由器正则表达式

    我正在尝试匹配 1 个可以有 2 种值的参数 当前 或至少包含 10 个密码的数字 我试过了 url history code current 0 9 10 当我使用这个正则表达式时 我的应用程序会转到history current 但是当
  • 克服 Windows Azure Sql 数据库 150 GB 大小限制

    SQL Azure 的数据库大小限制为 150 GB 我已多次阅读他们的文档并在网上搜索 但我不清楚这一点 使用联合是否允许开发人员超越 150 GB 的数据库 例如我可以有几个 150GB 的联邦成员吗 如果没有 我如何在 Windows
  • js 中的脚本

    我有一个jsp页面 我根据请求参数动态添加一些内容到页面 请求将返回一个数组 基于此我必须创建一个下拉列表 我想在更改另一个下拉菜单时执行此操作 因此只能使用 javascript 来完成 但我无法在 js 中使用 scriptlet 这真
  • Node.js 快速路由和控制器有什么区别?

    与传统的快速路线控制器相比 有什么不同或更强大的地方吗 如果您有一个 Express 应用程序并定义了模型 那么它是否会成为 MVC 应用程序 还是还有更多必要 我只是想知道我是否因为不升级到更合法的 控制器 而错过了节点表达应用程序中的额
  • 在 ASP.NET MVC 上使用绝对路径访问视图

    我正在尝试以这种方式访问 视图 return View Items Details aspx 我收到此错误 无法找到视图 Items Details aspx 或其主视图 搜索了以下位置 Items Details aspx 在 Items
  • 用于设置 IIS 环境变量的 PowerShell 脚本

    如何使用 PowerShell 自动执行以下步骤 转到 IIS 并选择一个网站 网站名称很可能会作为参数在脚本中传递 Go Inside the Configuration Editor Choose the aspNetCore Sect
  • 为什么 .NET Remoting 服务器无法向 Internet 客户端发送事件

    如您所知 NET Remoting 有一些限制 其中之一是服务器无法跨 NAT 防火墙向 Internet 客户端发送事件 这是一个证据 http social msdn microsoft com forums en US netfxre
  • 如何为自定义 B2B 应用程序添加 Apple ID?

    我正在尝试将自定义 B2B 应用程序添加到 iTunes 连接 从 Apple 文档看来应该有一个文本框来输入客户端 Apple ID 但我似乎没有类似的内容 Apple 文档如下所示苹果文档 https i stack imgur com
  • 在 django 形式中使用reverse()

    我正在尝试使用 django 的撤销 https docs djangoproject com en dev topics http urls reverse我的自定义小部件的 django 表单定义中的函数 但出现错误 Improperl
  • 网站的 NuGet 包恢复

    我正在尝试使用 NuGet Package RestoreVS2010 视觉源安全 它对我来说部分有效 这是从哪里来的 NuGet 没有获取丢失的包 https stackoverflow com questions 17797052 nu
  • admob 与 AndEngine + google play 服务集成时无法显示游戏画面

    我正在使用 andengine 通过 google play 服务进行游戏开发 我的游戏运行良好 但是 一旦我添加了 admob 并调用了 onSetContentView 回调 我的游戏屏幕就会变黑 只有广告可见 这是我的回调 onSet
  • ASP.NET Core 3.0 中的本地化

    我正在尝试使用 resx 文件使我的项目本地化 对我来说 这不起作用 但对我正在从事该项目的同事来说 它也起作用 有关代码的一些详细信息 Startup cs 文件 public void ConfigureServices IServic
  • Matlab 矩阵中非连续预定义值的出现顺序

    我有一个 9 列矩阵 如下所示 X X X X X X 0 2 0 X X X X X X 6 2 0 X X X X X X 6 2 0 X X X X X X 7 2 0 X X X X X X 8 2 0 X X X X X X 8