【问题标题】:How to find the index of zero elements in upper triangle matrix in a cell array如何在单元格数组中查找上三角矩阵中零元素的索引
【发布时间】:2015-12-22 12:10:46
【问题描述】:

我想在元胞数组内的矩阵的上三角形中找到零元素的索引。假设我有一个单元格数组A{1,1},并且在A 的第一个单元格内有一个大小为 19-by-19 的矩阵 B。如何在B 矩阵的上三角找到0 元素的索引?

我尝试使用this link 中的答案并编写了以下代码:

which(upper.tri(Adjecany_Valid_vertices{1,1}) &   Adjecany_Valid_vertices{1,1}==0, arr.ind=TRUE)

但它对我不起作用,它给了我一个错误:

等号左边的表达式不是赋值的有效目标。

有没有人找到这些请求的零的任何解决方案?

【问题讨论】:

  • 您发布的代码是 r 代码,所以它当然不能在 MATLAB!!!
  • 请提供实际的示例数据(可以简单地复制并粘贴到 MATLAB 中以获得确切的数据结构)。不要使用 19-by-19 矩阵,而是使用较小的示例,例如 5-by-5 .包括您想要的手动计算的输出。
  • @Dan,THX 丹。 randomGuy 的回答解决了我的问题

标签: matlab matrix find cell-array


【解决方案1】:

A{1,1} 不是元胞数组,它是元胞数组“A”中的一个元胞。但是您的问题实际上与单元阵列无关。您的问题是如何仅在矩阵的上三角部分中找到全零的索引。您要查找的代码是:

idx = triu(B==0)

idx 将是一个二维逻辑矩阵,只要元素为零,就为真。下三角部分的所有条目都是错误的。你可以像这样使用这个矩阵

t = B(idx)

将所有零元素作为一个单列数组。如果您想以i,j 格式获取索引,您必须这样做:

[i,j] = ind2sub(size(B), find(triu(B == 0))) 

我建议在文档中查找 triuind2subfind

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-30
    • 2015-07-29
    • 2013-01-03
    • 1970-01-01
    • 2023-04-09
    • 2017-09-12
    • 1970-01-01
    • 2017-03-05
    相关资源
    最近更新 更多