MATLAB -我如何找到另一列的值与索引从以前的操作?

ff29svar  于 6个月前  发布在  Matlab
关注(0)|答案(1)|浏览(68)

我目前正在尝试用273614 x25矩阵制作一个小矩阵,其中包含吸收线位置和前N个最强线强度。然而,我只需要波数在2045-2155范围内的相应值,这是矩阵中的一列。
到目前为止,将索引和范围设置得很好,但我尝试了一个小的for循环,它从第1列获取这些索引和范围,并尝试分配前N个最高值的索引。
我只需要一个N × 2矩阵,第一列是波数,第二列是前N行的强度及其相应的波数。
到目前为止,我得到了这个:

A = readmatrix("linelist_H216O.txt");
RangeMin = 2045;
RangeMax = 2155;
MinInd = find(A(:,1)>RangeMin,1);
MaxInd = find(A(:,1)>=RangeMax,1);
B = A(RangeMin:RangeMax,5);
L = maxk(B, 20, 1);
IND = zeros(length(L),1);

for i = 1:length(L)  
    IND(i) = find(A(MinInd:MaxInd,5)==L(i,:),1);
end 

TopLines = [IND+MinInd, L];

字符串
但是问题在第11行,这里说两边的元素个数不同,有人知道怎么解决这个问题吗?

pw9qyyiw

pw9qyyiw1#

我设法做到了这一点:

A = readmatrix("linelist_H216O.txt");   %Loads H20 Linelist
RangeMin = 2045;                        %Minimum Wavenumber
RangeMax = 2155;                        %Maximum Wavenumber
MinInd = find(A(:,1)>RangeMin,1);       %Index of Min WN
MaxInd = find(A(:,1)>=RangeMax,1);      %Index of Max WN
B = A(MinInd:MaxInd, [1, 5]);           %Column 1 and 5 of A (WN and Linestrengths (S)) within range
C = [1:25]';                            %Numbers
[L,I] = maxk(B(:,2), 25, 1);            %Get indices of 25 highest S
E = [C, B(I,:)];                        %WN and respective S in order

字符串

相关问题