FSO data:

- demystifyied dataset
- matched filter
- timing sync (whole sig, not symbol based)
- EQ is worse, I guess due to symbol timing recovery

Pulsef:
- can be used as matched filter now, the only thing I really changed was the sampling behavior - before it assumed that the input is always fsym, now it can be anything... fdac is output frequency for both methods
This commit is contained in:
silas (home)
2026-01-08 13:20:35 +01:00
parent 5c39a7f98a
commit 062c5dfbaf
6 changed files with 313 additions and 117 deletions

View File

@@ -13,7 +13,6 @@ db_precode = 0;
db_encode = 0;
rcalpha = 0.05;
kover = 16;
vbias_rel = 0.5;
u_pi = 2.9;
@@ -47,15 +46,21 @@ if M == 6
bitpattern = bitpattern(1:end-mod(length(bitpattern),5));
end
bits = Informationsignal(bitpattern);
bits = Informationsignal(bitpattern.');
symbols = PAMmapper(M,0).map(bits);
symbols.fs = fsym;
Pform = Pulseformer("fsym",fsym,"fs",fsym,"alpha",0.6,"pulse","rrc","pulselength",64,"matched_sps",4,"output_sps",2);
Pform.process(symbols);
symbols.spectrum("displayname",'Symbols','fignum',1);
%% RRC Shaping
rcalpha = 1;
Pform = Pulseformer("fsym",fsym,"fdac",4*fsym,"pulse","rrc","pulselength",16,"alpha",rcalpha);
Digi_sig = Pform.process(symbols);
Digi_sig.spectrum("displayname",'Signal after pluse shaping','fignum',1);
%% RRC Matched Filtering
Pform = Pulseformer("fsym",fsym,"fdac",4*fsym,"pulse","rrc","pulselength",16,"alpha",rcalpha);
Rx_sig = Pform.process(Digi_sig);
Rx_sig.spectrum("displayname",'Signal after matched filter','fignum',1);
MF = Pulseformer("fsym",fsym,"fdac",fdac,"pulse","rrc","pulselength",1024,"alpha",rcalpha,"matched",0);
Digi_sig = MF.process(Digi_sig);
Digi_sig.spectrum("displayname",'Signal after shaping','fignum',1);