Matlab,在“循环”中分配“if语句”

时间:2012-12-03 21:04:41

标签: matlab if-statement for-loop

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语句不对,主要是因为我无法弄清楚如何在矩阵中调用那个数据区域。

代码有点“冗长”,因此如果扫描参数(激发和发射波长)发生变化,则可以分配它们,其余代码也可以正常工作。

任何帮助将不胜感激。 感谢

1 个答案:

答案 0 :(得分:2)

另一种方式我们只是将相关值选择到一个新数组中,例如:

[val ind]=find(A > (excitation wavelengths+10) & A< (excitation wavelengths*2+20) );