【发布时间】:2014-03-05 03:40:30
【问题描述】:
我有一个计算化学程序 (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]。
有没有办法在没有一堆循环的情况下做到这一点?
提前致谢,
本
【问题讨论】:
-
我想出了一个非常不讨人喜欢的方法来解决这个问题:>>index=find([cube(:,1)==4 & cube(:,2)==3 & cube(:, 3)==1]==1) 从 [cube...] 部分生成一个向量,如果不匹配则包含 0,如果匹配则包含 1,然后在列表中搜索 1。由于列表是非重复的(只有一个可能的匹配项),因此列表中只有一个 1 并且提供了该索引。也许有一天它会对其他人有所帮助,所以我发布了我所做的。
标签: matlab