阵列的Matlab逻辑运算
我的问题应该很简单,但我没法解决。 我想通过使用逻辑运算符,然后只存储那些行,从矩阵中只获取相关行。 我习惯于在其他语言中使用for循环,但是在Matlab中,一次在整个数组或矩阵上运行它应该更快 这是一个我认为应该有效的例子,但我所有类似的尝试都会产生不同的错误,我不确定该怎么办阵列的Matlab逻辑运算,matlab,matrix,logical-operators,Matlab,Matrix,Logical Operators,我的问题应该很简单,但我没法解决。 我想通过使用逻辑运算符,然后只存储那些行,从矩阵中只获取相关行。 我习惯于在其他语言中使用for循环,但是在Matlab中,一次在整个数组或矩阵上运行它应该更快 这是一个我认为应该有效的例子,但我所有类似的尝试都会产生不同的错误,我不确定该怎么办 Mrelevant = Matrix(Matrix.no_refs > 100) 编辑:矩阵实际上是一个有标题的表,我只想保留满足某些要求的行,比如标题为“no_refs”的列中的值应该大于100 我希望这足
Mrelevant = Matrix(Matrix.no_refs > 100)
编辑:矩阵实际上是一个有标题的表,我只想保留满足某些要求的行,比如标题为“no_refs”的列中的值应该大于100
我希望这足够清楚,谢谢 这里显示的语法应该可以使用,尽管我不知道
no_refs
的目的是什么。正确的语法是:
Mrelevant = matrixName(matrixName > 100)
但是,这将创建一列,其中包含满足条件的值。比如说,
testMatrix =
0.8147 0.0975 0.1576 0.1419 0.6557
0.9058 0.2785 0.9706 0.4218 0.0357
0.1270 0.5469 0.9572 0.9157 0.8491
0.9134 0.9575 0.4854 0.7922 0.9340
0.6324 0.9649 0.8003 0.9595 0.6787
relevant = testMatrix(testMatrix > .5)
relevant =
0.8147
0.9058
0.9134
0.6324
0.5469
0.9575
0.9649
0.9706
0.9572
0.8003
0.9157
0.7922
0.9595
0.6557
0.8491
0.9340
0.6787
然而,当你说
通过使用逻辑运算符,然后存储
那些排
您的意思是只存储行中所有元素都满足条件的行吗?在这种情况下,语法将是
relevant = testMatrix
% Delete all rows that don't meet the requirement
relevant(any(relevant<=100, 2),:) = [];
relevant=testMatrix
%删除所有不符合要求的行
相关(any)(relevant既然您指定的矩阵
是a,答案就很清楚了。您忘记了一个额外的索引参数,该参数包含您所选择的给定行的所有变量:
Mrelevant = Matrix(Matrix.no_refs > 100, :);
这将为您提供一个新的表mrelevat
,其中只包括Matrix
中no\u refs
变量大于100的行。有关按行和/或变量访问表中数据的所有方法,请参见。请参见:显然Matrix
不是一个矩阵,而是某种类型的结构。请添加代码以创建示例矩阵
,以及您期望的此数据的输出。请参见下面的一个示例:我正在获取矩阵索引超出了删除范围。是否有任何线索可以解释为什么会出现这种情况?可能是因为特定矩阵的格式不正确。如果您可以将命令行或脚本发布到出现错误,我可以帮助进一步调试。