我有从计算化学程序(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]来计算非谐波频率。
如果没有一堆循环,有没有办法做到这一点?
提前致谢,
本
答案 0 :(得分:2)
您已经找到了一种方法来解决这个问题,方法是在表达式中使用&
(允许您进行非标量比较)。
另一种方法是使用ismember
:
index = find(ismember(cube(:,1:3),[4 3 1]));
请注意,在许多情况下,您甚至可能不需要调用find
:比较返回的二进制向量或ismember
可以直接用于索引另一个数组。