1

Matlab コード:

eminc = 2.5; %the increment of the emission spectra you collected
exinc = 5; %the increment of the excitation spectra you collected
em = 250:eminc:560; %Emission scan
ex = 240:exinc:450; %Excitation scan
A = xlsread(char(Afile));  % Reads in raw EEM file in .xlsx format.
ExTop=[0,ex]; %Recreates the row of excitation wavelengths cut off 
A=[ExTop ; A]; %Adds the excitation wavelengths back into the EEM file
Asize = size(A);

emfind = A(:,1);
emstart = find(emfind == findem(1));
emend = Asize(1);

exfind = A(emstart-1,:);
exstart = find(exfind == findex(1));
exend = Asize(2);

A = A(emstart:emend,exstart:exend);

for A=A(1:125,1:43)
   if emstart<=(ex+10)
       A=0;
        if emstart>=(ex*2+20)
         A=0;
        end
   end
end

データは励起発光マトリックス (サイズ 125x43 マトリックス) からの蛍光強度であり、励起波長と発光波長もデータに添付されています (サイズ 126x44 マトリックス)。

発光波長が <= (励起波長 + 10) の場合、および励起波長が >= (励起波長 * 2 + 20) の場合、データ行列に値 0 を割り当てたい

私は for ループと if ステートメントが正しくないことを知っています。これは主に、マトリックス内のデータのその領域を呼び出す方法さえわからないためです。

コードは少し「冗長」であるため、スキャン パラメータ (励起波長と発光波長) が変更された場合、それらを割り当てることができ、コードの残りの部分は関係なく機能します。

どんな助けでも大歓迎です。ありがとう

4

1 に答える 1

2

another way us just to pick the relevant values into a new array, something like:

[val ind]=find(A > (excitation wavelengths+10) & A< (excitation wavelengths*2+20) );
于 2012-12-03T21:26:16.323 に答える