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语句不对,主要是因为我无法弄清楚如何在矩阵中调用那个数据区域。
代码有点“冗长”,因此如果扫描参数(激发和发射波长)发生变化,则可以分配它们,其余代码也可以正常工作。
任何帮助将不胜感激。 感谢
答案 0 :(得分:2)
另一种方式我们只是将相关值选择到一个新数组中,例如:
[val ind]=find(A > (excitation wavelengths+10) & A< (excitation wavelengths*2+20) );