我的问题应该相当容易,但我无法让它发挥作用。 我想通过使用逻辑运算符从矩阵中仅使用相关行,然后仅存储这些行。 我习惯用其他语言的for循环来做这个,但是在Matlab中,一次在整个数组或矩阵上运行它应该更快。
这是我认为应该起作用的一个例子,但我所有类似的尝试都会产生不同的错误,我不知道该怎么做。
Mrelevant = Matrix(Matrix.no_refs > 100)
编辑:Matrix实际上是一个带有标题的表,我想只保留满足某些要求的行,比如标题为'no_refs'的列中的值应该大于100。
我希望这很清楚,谢谢!
答案 0 :(得分:2)
现在您指定的Matrix
是table
,答案很明确。您忘记了另外的colon索引参数,以包含您选择的给定行的所有变量:
Mrelevant = Matrix(Matrix.no_refs > 100, :);
这会为您提供一个新表Mrelevant
,其中仅包含Matrix
变量大于100的no_refs
行。有关所有方法,请参阅here按行和/或变量访问table
中的数据。
答案 1 :(得分:0)
您在此处显示的语法应该有效,但我不知道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),:) = [];
这将删除包含不符合您要求的值的任何行。