git-svn-id: http://moon:8086/svn/matlab/trunk@158 801c6759-fa7c-4059-a304-17956f83a07c
81 lines
1.4 KiB
Matlab
Executable File
81 lines
1.4 KiB
Matlab
Executable File
function P = eval_farrow()
|
|
M = 5;
|
|
Nb = 33;
|
|
R = 32;
|
|
Np = R*(Nb+1);
|
|
sr = 1;
|
|
SRRC_ROLLOFF = 0.35;
|
|
nsamplespersym = 2;
|
|
|
|
if (mod(Nb, 2) ~= 0)
|
|
offset = R/2;
|
|
else
|
|
offset = R/2;
|
|
end;
|
|
|
|
offset=0
|
|
% Simulation
|
|
Ni = 1000;
|
|
|
|
close all;
|
|
|
|
[hp, kn] = calcfir_srrc(R*nsamplespersym*sr, 2/sr, SRRC_ROLLOFF, Np);
|
|
hp = R*kn*hp; %.*kaiser(Np, 8)';
|
|
%hp = gen_basefir(N, R, 0.125).*hann(R*N+1)';
|
|
|
|
hb = hp(offset+1:R:Np);
|
|
freqz(hb);
|
|
|
|
P = fir_polyfit(M, R, hp, Nb, offset);
|
|
|
|
for k=1:Nb,
|
|
pv((k-1)*Ni+1:k*Ni) = polyval(P(k,:), (0:Ni-1)/Ni);
|
|
end;
|
|
|
|
figure;
|
|
plot(offset:R:Np-1, hb, 'ro', 0:Np-1, hp, 'b+', R*(0:Nb*Ni-1)/Ni, pv, 'g-');
|
|
legend('Base FIR', 'Prototype FIR', 'Interpolation');
|
|
grid;
|
|
|
|
for pp=1:M,
|
|
figure;
|
|
pt = sprintf('C_{%d}', M-pp);
|
|
plot(0:Nb-1, P(1:Nb, pp));
|
|
title(pt);
|
|
grid on;
|
|
end;
|
|
|
|
Nd = 11;
|
|
x = [1 zeros(1, Nb)];
|
|
for d=1:Nd,
|
|
mu(d) = (Nd-d)/(Nd-1);
|
|
y(d,:) = farrow(x, P, mu(d));
|
|
end;
|
|
|
|
figure;
|
|
for d=0:R
|
|
plot(hp(offset+1+d:R:offset+R*Nb+d)); grid on; hold on;
|
|
end
|
|
|
|
figure;
|
|
|
|
for d=1:Nd,
|
|
pt = sprintf('mu = %f', mu(d));
|
|
plot(y(d,:)); grid on; hold on;
|
|
% freqz(y(d,:));
|
|
legend(pt);
|
|
F(d) = getframe;
|
|
end;
|
|
|
|
fid = fopen('farrow_coeff.dat','wb');
|
|
|
|
fwrite(fid,M,'uint');
|
|
fwrite(fid,Nb,'uint');
|
|
fwrite(fid,P,'float');
|
|
|
|
fclose(fid);
|
|
%for mm=1:M
|
|
% for nn=1:Nb
|
|
|
|
|
|
movie(F,3, 12) |