Update April
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user