En fait, le signal capté semble être quelque chose comme du dPMR (?). À mon souvenir, il était plus 'propre' et je ne suis même pas sûr que le filtre était indispensable.
$ dd if=BBD_0001.C16 of=_1.c16 bs=1M count=1Histoire d'avoir un fichier de taille raisonnable (à 500ksamples/sec, cela fait 2MB/sec). On peut ensuite charger le fichier composé alternativement de I et de Q 16 bits signés dans un vecteur de nombres complexes en virgule flottante.
function y = loadC16File(filename) % y = loadC16File(filename) % % reads complex samples from the portapack file % fid = fopen(filename,'rb'); y = fread(fid,'int16=>double'); y = y(1:2:end) + i*y(2:2:end);Ensuite, traiter le signal... Dans ce cas-ci, le filtre est trop large, la bande passante du signal est beaucoup plus étroite mais cela permet déjà d'y voir plus clair.
x0=loadC16File("_1.c16");
Ts=1/500000;
freqs=[0 0.2 0.21 1];
amps=[1 1 0 0];
b=remez(100, freqs, amps);
x=filter(b, 1, x0);
a=abs(x);
p=arg(x);
pp=unwrap(p);
fig=figure();
subplot(2,1,1);
plot(a);
title("abs(x) - magnitude");
subplot(2,1,2);
plot(pp);
title("unwrap(arg(x)) - argument/phase");
print(fig, "plot011.png", "-S800,800");
return;
On prend une partie utile du signal (entre 5001 et 24500), on corrige légèrement la fréquence : ajout de 50 pi-radians sur 20000 échantillons pour redresser le graphe (je l'avais fait manuellement an ajoutant un linspace(), mais detrend() est fait pour cela) et on obtient :
ppp=pp(5001:24500);
pppdt = detrend(ppp,1);
fig=figure();
plot(pppdt);
axis([0 1 -50 50], "autox");
title("detrend(unwrap(arg(filter(x)))(5001:24500))");
print(fig, "coresigdt.png", "-dpng", "-S1280,360");
Tadaah... Il ne reste plus qu'à traduire ça en bits et bytes... (hum...; Ce n'est pas vraiment comme ça qu'il faut faire, mais bon...)

