我有一个计算化学程序(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,以计算非谐波频率。
有没有办法不用一堆循环就能做到这一点?
提前谢谢你,
本
发布于 2014-03-05 03:40:31
您已经找到了一种解决此问题的方法,即在表达式中使用& (允许进行非标量比较)。
另一种方法是使用ismember
index = find(ismember(cube(:,1:3),[4 3 1]));
请注意,在许多情况下,您可能甚至不需要调用find:由比较或ismember返回的二进制向量可以直接用于索引到另一个数组。
https://stackoverflow.com/questions/22178469
复制相似问题