在Matlab中访问索引作为矩阵的第一列

时间:2014-03-04 17:11:32

标签: matlab

我有从计算化学程序(Gaussian09)输出的数据,其包含多组力常数数据。数据按索引排列为前2-4列(计算二次,三次和四次FC)。作为一个例子,立方FC看起来像这样,MatLab已成功读取它们,所以我有正确的矩阵:

cube=[
1  1  1  5  5  5
1  1  2  6  6  6
.
.
4  1  1  8  8  8
4  2  1  9  9  9
4  3  1  7  7  7 ]

在输入前3列的索引时,我需要一种方法来访问最后3列。

的内容
>>index=find([cube(:,1)==4 && cube(:,2)==3 && cube(:,3)==1]);

这会给我索引[4 3 1]数据的行号,并允许我读出循环中需要的值[7 7 7]来计算非谐波频率。

如果没有一堆循环,有没有办法做到这一点?

提前致谢,

1 个答案:

答案 0 :(得分:2)

您已经找到了一种方法来解决这个问题,方法是在表达式中使用&(允许您进行非标量比较)。

另一种方法是使用ismember

index = find(ismember(cube(:,1:3),[4 3 1]));

请注意,在许多情况下,您甚至可能不需要调用find:比较返回的二进制向量或ismember可以直接用于索引另一个数组。