代码1
close all;
clear all;
clc;
file_I = fopen('fe_agc_in.in', 'r');
sig_I = fread(file_I, 'float32');
sig_points_I = numel(sig_I);
fclose(file_I);
x=sig_I;
[N col]=size(x);
Px=zeros(size(x));
Py=zeros(size(x));
y=zeros(size(x));
g=zeros(size(x));
a=0.2;
mu=0.5;
Pref=0.4;
%Pmin=0.000000001;
%Pmax=0.5;
g(1,1)=1;
y(1,1)=x(1,1);
Py(1,1)=(1-a)*x(1,1)*x(1,1);
Px(1,1)=(1-a)*x(1,1)*x(1,1);
for n=2:N
Px(n,1)=a*Px(n-1,1)+(1-a)*x(n,1)*x(n,1);
g(n,1)=g(n-1,1)*(1+mu*Px(n,1)*(Pref-Py(n-1,1)));
y(n,1)=g(n,1)*x(n,1);
if y(n,1)>2
y(n,1)=2;
end
if y(n,1)<-2
y(n,1)=-2;
end
Py(n,1)=g(n,1)*g(n,1)*Px(n,1);
end
figure;
plot(x);
figure;
plot(y);
代码2
close all;
clear all;
clc;
file_I = fopen('fe_agc_in.in', 'r');
sig_I = fread(file_I, 'float32');
sig_points_I = numel(sig_I);
fclose(file_I);
% file_Q = fopen('fir_q_f100k.f100k', 'r');
% sig_Q = fread(file_Q, 'float32');
% sig_points_Q = numel(sig_Q);
% fclose(file_Q);
I = sig_I;
Q = zeros(length(I),1);
N = length(I);
gain = zeros(N,1);
alpha = 0.01;
y2_prime = zeros(N,1);
for i = 1:N
gain(i) = 1.0;
y2_prime(i) = 1.0;
end
for i = 1:N - 2
yi(i) = I(i) * gain(i);
% yq(i) = Q(i) * gain(i);
y2(i) = real((yi(i) + yq(i) * 1i) .*(yi(i) - yq(i) * 1i));
% y2(i) = yi(i) * yi(i);
y2_prime(i + 1) = (1.0 - alpha) .* y2_prime(i) + alpha * y2(i);
if(y2_prime(i + 1) > 1e-6)
temp(i) = exp(-0.5 * alpha * log(y2_prime(i + 1)));
gain(i + 1) = gain(i) *temp(i) ;
else
% gain(i + 1) = gain(i);
end
if( gain(i + 1) > 1e6)
gain(i + 1) = 1e6;
end
end
figure;
plot(I);
figure;
plot(yi);
figure;
plot(gain);
figure;
plot(temp);
figure;
plot(y2_prime);