Update April

This commit is contained in:
Silas Oettinghaus
2024-04-19 10:31:36 +02:00
parent 025498d120
commit ed17953407
30 changed files with 3261 additions and 1580 deletions

View File

@@ -32,11 +32,53 @@ classdef Opticalsignal < Signal
end
%%
function [obj,delay_n] = delay(obj,options)
arguments
obj Opticalsignal
options.delay_meter double = 0
options.delay_samples = 0
end
if options.delay_meter ~= 0
delay_t = options.delay_meter /(physconst("LightSpeed")/1.4677);
delay_n = delay_t .* obj.fs;
else
delay_n = options.delay_samples;
end
obj.signal=delayseq(obj.signal,delay_n);
end
function pow = power(obj)
pow = mean(abs(obj.signal.^2)) ;
% pow = pow2db(pow)+30;
pow = mean( abs(obj.signal).^2 ) ;
pow = pow2db(pow)+30; %dbm
end
function cspr = cspr(obj)
carrier_power_dbm = pow2db( abs(mean(obj.signal)).^2 )+30; % dB -> +30 -> dBm
signal_power_dbm = obj.power;
carr_lin = abs(mean(obj.signal)).^2;
sign_lin = mean(abs(obj.signal).^2);
cspr_lin = pow2db(carr_lin/sign_lin);
cspr =carrier_power_dbm-signal_power_dbm;
end
function papr = papr(obj)
average_power = obj.power;
peak_power = pow2db(max(abs(obj.signal.^2)))+30;
papr = peak_power - average_power;
end
end