HE/FCME.m

46 lines
2.0 KiB
Mathematica
Raw Normal View History

2024-03-30 16:35:40 +08:00
%%************************<EFBFBD><EFBFBD>FCME<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>****************************%%
%%=============================<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD>===================================%%
% data <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
% Pf <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
% J <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD>ŵ<EFBFBD><EFBFBD>
%%========================================================================%%
function J = FCME(data,Pf)
T = sqrt(-1*(4/pi)*log(Pf)); %%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
J = [];
L = length(data);
fi = [];
[y_sort,index] = sort(abs(data),'ascend'); %%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
%%<EFBFBD><EFBFBD>ÿ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD>ֵ
for k = 1:L
fi(k)=abs(data(k));
end
%%%%<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
J = index(round(L/10)+1:end); %%ʣ<EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><EFBFBD>ż<EFBFBD><EFBFBD><EFBFBD>
I = index(1:round(L/10)); %%<EFBFBD>޸<EFBFBD><EFBFBD>ż<EFBFBD><EFBFBD><EFBFBD>\
S = mean(fi(I));
%%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><EFBFBD>
for m = 1:50 %%FCME<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
length_J = length(J); %%J<EFBFBD><EFBFBD><EFBFBD>ϵij<EFBFBD><EFBFBD><EFBFBD>
ii = 1;
jj = 1;
new_I = [];
new_J = [];
for j1 = 1:length_J
J1 = J(j1); %%J<EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if fi(J1) < T*S %%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>I<EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><EFBFBD><EFBFBD>J<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޳<EFBFBD>
new_I(ii) = J1;
ii = ii +1;
else %%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
new_J(jj) = J1;
jj = jj + 1;
end
end
if isempty(new_I) %%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>new_IΪ<EFBFBD>գ<EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
break;
end
J = new_J;
I = union(I,new_I);
S = mean(fi(I)); %%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>
end
end