Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Matlab中作为矩阵的第一列访问索引_Matlab - Fatal编程技术网

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

在Matlab中作为矩阵的第一列访问索引,matlab,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列的方法。类似于 &

我有一个计算化学程序(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]

有没有办法不用一堆循环就能做到这一点

提前感谢,


Ben

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

另一种方法是使用
ismember

index=find(ismember(立方体(:,1:3),[431])


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

我想出了一个非常不讨人喜欢的方法来解决这个问题:>>index=find([cube(:,1)==4&cube(:,2)==3&cube(:,3)==1)它从[cube…]部分生成一个向量,该部分包含0(如果不匹配)和1(如果匹配),然后在列表中搜索1。由于列表是非重复的(只有一个可能的匹配),因此列表中只有一个1,并且提供了该索引。也许有一天它会帮助其他人,所以我将我所做的发布出来。