0

我正在使用 Matlab 中的矩阵,它有五列和几百万行。我有兴趣挑选这些数据的特定组。目前我正在使用 plot3() 和画笔/选择数据工具来执行此操作。

我将矩阵的前三列绘制为 X、Y、Z 并突出显示我感兴趣的矩阵区域。然后我使用画笔/选择工具的“创建变量”工具将该区域导出为新矩阵。

问题是,当我这样做时,原始较大矩阵的剩余两列将被删除。我明白为什么 - 它们没有被绘制,因此图形工具不知道它们。不过,为了继续处理管道,我需要该子区域的所有五列。

我正在使用可怕的嵌套 if 循环方法将适当的第 4 列和第 5 列值添加到导出的矩阵中 - 如果原始矩阵和导出矩阵中的第 1、2 和 3 列都匹配,则将原始矩阵的 4/5 列附加到出口了一个。这是糟糕的设计和令人痛苦的缓慢。我知道必须有一个 Matlab 函数/技巧 - 任何人都可以帮忙吗?

谢谢!

这可能会有所帮助:

1.  I start with matrix 1 with columns X,Y,Z,A,B
2.  Using the brush/select tool, I create a new (subregion) matrix 2 with columns X,Y,Z
3.  I then loop through all members of matrix 2 against all members of matrix 1.  If X,Y,Z match for a pair of rows, I append A and B
from that row in matrix 1 to the appropriate row in matrix 2.
4.  I become very sad as this takes forever and shows my ignorance of Matlab.
4

1 回答 1

0

如果我正确理解您的情况,这是一种简单的方法:

假设你有一个这样的矩阵:M = [A B C D E]每个字母都是一个 Nx1 向量。

您选择一个范围,这部分对我来说不是很清楚,但假设您可以创建以下内容:

idxA,idxBidxC, 如果它们在区域内则为 1,否则为 0。

然后你可以简单地使用:

M(idxA&idxB&idxC,:)

您还将获得额外的两列。

于 2013-02-27T21:32:53.373 回答