我正在使用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.
答案 0 :(得分:0)
如果我理解你的情况,这是一个简单的方法:
假设您有一个这样的矩阵:M = [A B C D E]
其中每个字母都是Nx1向量。
您选择了一个范围,这部分对我来说并不是很清楚,但假设您可以创建以下内容:
idxA
,idxB
和idxC
,如果他们在该地区,则为1,否则为0。
然后你可以简单地使用:
M(idxA&idxB&idxC,:)
您还将获得额外的两列。