使用Matlab画笔/选择数据工具保留矩阵列

时间:2013-02-27 18:39:22

标签: matlab

我正在使用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.

1 个答案:

答案 0 :(得分:0)

如果我理解你的情况,这是一个简单的方法:

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

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

idxAidxBidxC,如果他们在该地区,则为1,否则为0。

然后你可以简单地使用:

M(idxA&idxB&idxC,:)

您还将获得额外的两列。