From f5c3a1b9028fe21ae9c940409e61ea378aa89e45 Mon Sep 17 00:00:00 2001 From: Silas Oettinghaus Date: Tue, 16 May 2023 17:43:51 +0200 Subject: [PATCH] Minimal Working - seems too good?! --- .DS_Store | Bin 0 -> 6148 bytes Classes/AWG.m | 32 +- Classes/Amplifier.m | 21 +- Classes/EML.m | 25 +- Classes/EQ.m | 279 +++++++++++---- Classes/Electricalsignal.m | 38 +- Classes/Fiber.m | 17 +- Classes/Filter.m | 16 +- Classes/Informationsignal.m | 19 +- Classes/Opticalsignal.m | 41 ++- Classes/PAMmapper.m | 183 ++++++++++ Classes/Photodiode.m | 19 +- Classes/Scope.m | 26 +- Classes/Signal.m | 137 +++++++- Functions/.DS_Store | Bin 0 -> 6148 bytes Functions/settingsdlg/.gitignore | 11 + Functions/settingsdlg/License.txt | 26 ++ Functions/settingsdlg/README.md | 114 ++++++ Functions/settingsdlg/Screen.png | Bin 0 -> 5208 bytes Functions/settingsdlg/settingsdlg.m | 488 ++++++++++++++++++++++++++ Functions/settingsdlg/settingsdlg.odt | Bin 0 -> 57539 bytes Functions/settingsdlg/settingsdlg.pdf | Bin 0 -> 129042 bytes comm_tb.m | 244 ++++++------- 23 files changed, 1476 insertions(+), 260 deletions(-) create mode 100644 .DS_Store create mode 100644 Classes/PAMmapper.m create mode 100644 Functions/.DS_Store create mode 100644 Functions/settingsdlg/.gitignore create mode 100644 Functions/settingsdlg/License.txt create mode 100644 Functions/settingsdlg/README.md create mode 100644 Functions/settingsdlg/Screen.png create mode 100644 Functions/settingsdlg/settingsdlg.m create mode 100644 Functions/settingsdlg/settingsdlg.odt create mode 100644 Functions/settingsdlg/settingsdlg.pdf diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..6f25ac248c3bbfe0a1cbc90dc313136dc8fd974d GIT binary patch literal 6148 zcmeHKUuzmc5T8|J_K<)NEi`WneHH4(Bo_K|HMSohSK5cRSkDtZa^8w})(4T^dqTfY z-`h_R=(oss$m}1BL4`a>C^7@HzuDQDUH7-gt^)w9H4R;WDgba)g#`zj4Wh=Cu1Udq z%7{$QkwF9!5=evDS~NNSM+Vf{Iq)8)cxpXZIlpuq#4^CqU%@zz(yU(p%L>KPLHUp$ z@(Taz59Q3yy4f^sbtj)y?}Lj(!~iis4D5mdd%f_=E+(Tnhyh|?uNYAGgFsd2SF5_W&a;>sH0i)>@xkoM%vLB&ua5Hz9S+PhNG&ly3_N6@ zXu4JP{=eH^|36Hk9x*@+>=gs7)b`sg+>(7;*EXl#T7mivRf&qr4gO0(LqEkBtDfQ) bs9Ml3l!543%nhOkh5iU=8mJ)#o|J)m!Y6V& literal 0 HcmV?d00001 diff --git a/Classes/AWG.m b/Classes/AWG.m index 0ed6ecb..1eb8a84 100644 --- a/Classes/AWG.m +++ b/Classes/AWG.m @@ -79,7 +79,29 @@ classdef AWG end - function elec_out = process_channel(obj,data_in) + function signalclass_out = process(obj,signalclass_in) + + % actual processing of the signal (steps 1. - 3.) + signalclass_in.signal = obj.process_(signalclass_in.signal); + + % 4. Apply LPF on the signal + if obj.lpf_active + lpf = Filter('filtdegree',4,"f_cutoff",obj.f_cutoff,"fsamp",obj.kover*obj.fdac,"filterType",filtertypes.bessel_inp); + signalclass_in = lpf.process(signalclass_in); + end + + % cast the inform. signal to electrical signal + signalclass_in = Electricalsignal(signalclass_in,"fs",obj.fdac*obj.kover,"logbook",signalclass_in.logbook); + + % append to logbook + signalclass_in = signalclass_in.logbookentry(); + + % write to output + signalclass_out = signalclass_in; + + end + + function elec_out = process_(obj,data_in) %METHOD1 Summary of this method goes here % Detailed explanation goes here arguments(Input) @@ -119,13 +141,7 @@ classdef AWG elec_out = obj.skew(elec_out); end - % 4. Apply LPF on the signal - if obj.lpf_active - lpf = Filter('filtdegree',4,"f_cutoff",obj.f_cutoff,"fsamp",obj.kover*obj.fdac,"filterType",filtertypes.bessel_inp); - elec_out = lpf.process(elec_out); -% obj.H_lpf = obj.buildFilter(1); -% data_out = obj.lpf(data_out) ; - end + end diff --git a/Classes/Amplifier.m b/Classes/Amplifier.m index dc90618..4b403bf 100644 --- a/Classes/Amplifier.m +++ b/Classes/Amplifier.m @@ -53,7 +53,22 @@ classdef Amplifier end - function [y_out,nase] = process(obj,x_in,optional) + function signalclass_out = process(obj,signalclass_in) + + % actual processing of the signal (steps 1. - 3.) + signalclass_in.signal = obj.process_(signalclass_in.signal); + + % append to logbook + lbdesc = ['Amp ']; + signalclass_in = signalclass_in.logbookentry(lbdesc); + + % write to output + signalclass_out = signalclass_in; + + end + + + function [y_out,nase] = process_(obj,x_in,optional) arguments obj @@ -98,11 +113,11 @@ classdef Amplifier if obj.amp_mode == "output_power" seemsright = pow_out_dbm == obj.amplification_db; elseif obj.amp_mode == "gain" - seemsright = pow_out_dbm == pow_in_dbm+ obj.amplification_db; + seemsright = pow_out_dbm == pow_in_dbm + obj.amplification_db; end if ~seemsright - warning("Amplifier output not correct, please check the reason"); + % warning("Amplifier output not correct, please check the reason"); end end diff --git a/Classes/EML.m b/Classes/EML.m index cfe4efd..92be1e0 100644 --- a/Classes/EML.m +++ b/Classes/EML.m @@ -64,7 +64,25 @@ classdef EML end - function [opt_out,obj] = process(obj,elec_in) + function signalclass_out = process(obj,signalclass_in) + + % actual processing of the signal (steps 1. - 3.) + signalclass_in.signal = obj.process_(signalclass_in.signal); + + % cast the inform. signal to electrical signal + signalclass_in = Opticalsignal(signalclass_in,"fs",obj.fsimu,"logbook",signalclass_in.logbook,"lambda",obj.lambda*1e-9,"nase",0); + + % append to logbook + lbdesc = ['EML ']; + signalclass_in = signalclass_in.logbookentry(lbdesc); + + % write to output + signalclass_out = signalclass_in; + + end + + + function [opt_out,obj] = process_(obj,elec_in) %METHOD1 Summary of this method goes here % Detailed explanation goes here @@ -76,6 +94,8 @@ classdef EML if obj.linewidth ~= 0 ph_noi = obj.createPhaseNoise; laserfield = obj.field.*exp(1i*ph_noi); + %remember phase (! you need to receive the altered eml object in you sim program !) + obj.phase = ph_noi(end); else laserfield = obj.field; end @@ -83,8 +103,7 @@ classdef EML %modulate the laserfield with the electrical signal opt_out = obj.externalmodulation(laserfield,elec_in); - %remember phase (! you need to receive the altered eml object in you sim program !) - obj.phase = ph_noi(end); + end diff --git a/Classes/EQ.m b/Classes/EQ.m index b52f3f1..0306d8d 100644 --- a/Classes/EQ.m +++ b/Classes/EQ.m @@ -33,9 +33,24 @@ classdef EQ mode3rd %0: no reduction | 1: polynomial | 2: restricted to interval len_3rd %length of the interval (only for 3rd order mode = 3/4) + plottrain + plotfinal + load_decisions + + save_taps + %during simulation - k0 + k0 + b + b2 + b3 + e + e2 + e3 + + coeff_number + constellation_in end @@ -44,13 +59,65 @@ classdef EQ %EQ Construct an instance of this class % Detailed explanation goes here arguments(Input) - options + options.Ne = [10 0 0] %Number of feed forward coefficients (1st, 2nd and 3rd order) + options.Nb = [10 0 0]%Number of decision feedback coefficients (1st, 2nd and 3rd order) + options.K = 1 %Number of samples per symbol + options.delay = 0 %Delay of incoming signal + options.training_length = 1024 %Number of training symbols + options.training_loops = 1 %Number of loops through sequence for training mode + options.ideal_dfe = 0 %Error free DFE decisions + + options.DB_aim %Aim at duobinary output sequence + + options.M = 1 %Order of the PAM constellation (only relevant in case of DB aim) + + options.FFEmu = 0 %mu parameter for FFE part in training mode (0 means normalized LMS) + options.DFEmu = 0.005 % mu parameter for DFE part in training mode + options.dd_loops = 1% Number of loops through sequence for DD mode + options.DDmu = [0.0004 0.0004 0.0004 0.0004 ] % mu parameters for DD mode (individual value for each order) + options.DCmu = 0.005 % mu parameter for the dc tap + + options.l1act = 0 %Activate/deactive l1 regularization + options.rho = 5e-4%Parameter for speed of coeff shrinking + options.epsilon = [10 100 1000] %Reciprocal value of the magnitude of the coeff to converge to zero (1st,2nd,3rd order) + options.thres = [5e-3 4e-3 5e-4]%Theshold for neglecting coefficienties (1st,2nd,3rd order) + options.static_act = 0 %Activate/deactive static coefficient reduction + + options.mode2nd = 1%0: no reduction | 1: polynomial | 2: restricted to interval + options.len_2nd = 1 %length of the interval (only for 2nd order mode = 2) + + options.mode3rd = 1%0: no reduction | 1: polynomial | 2: restricted to interval + options.len_3rd = 1%length of the interval (only for 3rd order mode = 3/4) + + options.plottrain = 0 + options.plotfinal = 0 + options.load_decisions = 0 + options.save_taps = 0 + end + + fn = fieldnames(options); + for n = 1:numel(fn) + obj.(fn{n}) = options.(fn{n}); end - % alles nochmal mappen end - function yout = process(obj,data_in,ref_in) + function signalclass_out = process(obj,signalclass_in, reference_signalclass_in) + + % actual processing of the signal (steps 1. - 3.) + signalclass_in.signal = obj.process_(signalclass_in.signal', reference_signalclass_in.signal'); + + signalclass_in.signal = signalclass_in.signal'; + % append to logbook + lbdesc = ['EQ ']; + signalclass_in = signalclass_in.logbookentry(lbdesc); + + % write to output + signalclass_out = signalclass_in; + + end + + function yout = process_(obj,data_in,ref_in) %METHOD1 Summary of this method goes here % Detailed explanation goes here @@ -141,107 +208,107 @@ classdef EQ [ind_mat_DFE_2nd,ind_mat_DFE_3rd] = obj.calc_DFE_ind(obj.Nb(2),Nb2,obj.Nb(3),Nb3); if obj.l1act - epsilon = diag([ones(1,obj.Ne(1))*obj.epsilon(1) ones(1,N2)*obj.epsilon(2) ones(1,N3)*obj.epsilon(3)]); + epsilon_ = diag([ones(1,obj.Ne(1))*obj.epsilon(1) ones(1,N2)*obj.epsilon(2) ones(1,N3)*obj.epsilon(3)]); end obj.k0 = obj.delay; % input delay compared to training sequence if 1 % obj.active %% Calculation of the filter coefficients in training based LMS mode - e = zeros(obj.Ne(1)+N2+N3,1); % initialization of filter coefficients + e_ = zeros(obj.Ne(1)+N2+N3,1); % initialization of filter coefficients % e(ceil(obj.Ne(1)/2)) = 1; % set central tap to 1 (better starting point since it's closer to the expected solution) - b = zeros(obj.Nb(1)+Nb2+Nb3,1); + b_ = zeros(obj.Nb(1)+Nb2+Nb3,1); e_dc = mean(data_in); % initilaization of the dc tap with the mean value of the data % e_save = NaN(361,8.6e5); % save_ind = 1; for trainloops = 1:obj.training_loops - m = state.k0+1; % starting symbol index at the delay compared to the training sequence - for n = obj.K*state.k0+1:obj.K:obj.K*obj.training_length + m = obj.k0+1; % starting symbol index at the delay compared to the training sequence + for n = obj.K*obj.k0+1:obj.K:obj.K*obj.training_length m = m+1; X_1 = data(obj.Ne(1)+n+(obj.K-1):-1:n+obj.K).'; - [X_2,X_3] = calc_nl_vecs(X_1,ind_mat_2nd,ind_mat_3rd,norm_fac2,norm_fac3,delta_2,delta_3,cplx); + [X_2,X_3] = obj.calc_nl_vecs(X_1,ind_mat_2nd,ind_mat_3rd,norm_fac2,norm_fac3,delta_2,delta_3,cplx); - D_1 = ref(obj.Nb(1)-state.k0+m-2:-1:m-state.k0-1).'; - [D_2,D_3] = calc_nl_vecs(D_1,ind_mat_DFE_2nd,ind_mat_DFE_3rd,norm_fac_DFE2,norm_fac_DFE3,delta_DFE2,delta_DFE3,cplx); + D_1 = ref(obj.Nb(1)-obj.k0+m-2:-1:m-obj.k0-1).'; + [D_2,D_3] = obj.calc_nl_vecs(D_1,ind_mat_DFE_2nd,ind_mat_DFE_3rd,norm_fac_DFE2,norm_fac_DFE3,delta_DFE2,delta_DFE3,cplx); input_vec = [X_1;X_2;X_3]; reference_vec = [D_1;D_2;D_3]; - error = e_dc + e.'*input_vec - b.'*reference_vec - ref_in(m-state.k0); % error = e_dc + e.'*input_vec - b.'*reference_vec - ref_in(m-state.k0); + error = e_dc + e_.'*input_vec - b_.'*reference_vec - ref_in(m-obj.k0); % error = e_dc + e.'*input_vec - b.'*reference_vec - ref_in(m-obj.k0); if real(obj.FFEmu) if obj.l1act - sgn_e = e; - sgn_e(e~=0) = e(e~=0)./abs(e(e~=0)); - e = e - obj.rho*sgn_e./(1+epsilon*abs(e)) - error*input_vec*obj.FFEmu; + sgn_e = e_; + sgn_e(e_~=0) = e_(e_~=0)./abs(e_(e_~=0)); + e_ = e_ - obj.rho*sgn_e./(1+epsilon_*abs(e_)) - error*input_vec*obj.FFEmu; else - e = e - error*conj(input_vec)*obj.FFEmu; %e = e - error*conj(input_vec)*obj.FFEmu; %e = e - error*input_vec*obj.FFEmu; + e_ = e_ - error*conj(input_vec)*obj.FFEmu; %e = e - error*conj(input_vec)*obj.FFEmu; %e = e - error*input_vec*obj.FFEmu; end else if obj.l1act - sgn_e = e; - sgn_e(e~=0) = e(e~=0)./abs(e(e~=0)); - e = e - obj.rho*sgn_e./(1+epsilon*abs(e)) - error*input_vec/(input_vec.'*input_vec); + sgn_e = e_; + sgn_e(e_~=0) = e_(e_~=0)./abs(e_(e_~=0)); + e_ = e_ - obj.rho*sgn_e./(1+epsilon_*abs(e_)) - error*input_vec/(input_vec.'*input_vec); else - e = e - error*input_vec/(input_vec.'*input_vec); + e_ = e_ - error*input_vec/(input_vec.'*input_vec); end end % e_save(:,save_ind) = e; % save_ind = save_ind+1; - e_dc = e_dc - obj.dcmu*error; + e_dc = e_dc - obj.DCmu*error; if obj.Nb(1) > 0 - b = b + obj.DFEmu*error*reference_vec; % Seems like normalized DFE has worse performance + b_ = b_ + obj.DFEmu*error*reference_vec; % Seems like normalized DFE has worse performance end end end %% % Plot the intermediate coefficients after training mode - state.b = b(1:obj.Nb(1)); - state.b2 = b(obj.Nb(1)+1:obj.Nb(1)+Nb2); - state.b3 = b(obj.Nb(1)+Nb2+1:end); - state.e = e(1:obj.Ne(1)); - state.e2 = e(obj.Ne(1)+1:obj.Ne(1)+N2); - state.e3 = e(obj.Ne(1)+N2+1:end); + obj.b = b_(1:obj.Nb(1)); + obj.b2 = b_(obj.Nb(1)+1:obj.Nb(1)+Nb2); + obj.b3 = b_(obj.Nb(1)+Nb2+1:end); + obj.e = e_(1:obj.Ne(1)); + obj.e2 = e_(obj.Ne(1)+1:obj.Ne(1)+N2); + obj.e3 = e_(obj.Ne(1)+N2+1:end); if obj.plottrain figure(8052) - subplot(2,3,1); stem(abs(state.e),'Markersize',2); + subplot(2,3,1); stem(abs(obj.e),'Markersize',2); title('FFE coeff linear') xlabel('coefficient index'); ylabel('value'); set(gca,'Fontsize',12) - subplot(2,3,2); stem(state.e2,'Markersize',2); + subplot(2,3,2); stem(obj.e2,'Markersize',2); title('FFE coeff nl 2nd') xlabel('coefficient index'); ylabel('value'); set(gca,'Fontsize',12) - subplot(2,3,3); stem(state.e3,'Markersize',2); + subplot(2,3,3); stem(obj.e3,'Markersize',2); title('FFE coeff nl 3rd') xlabel('coefficient index'); ylabel('value'); set(gca,'Fontsize',12) - subplot(2,3,4);stem(state.b,'Markersize',2); + subplot(2,3,4);stem(obj.b,'Markersize',2); title('DFE coeff linear') xlabel('coefficient index'); ylabel('value'); set(gca,'Fontsize',12) - subplot(2,3,5);stem(state.b2,'Markersize',2); + subplot(2,3,5);stem(obj.b2,'Markersize',2); title('DFE coeff nl 2nd') xlabel('coefficient index'); ylabel('value'); set(gca,'Fontsize',12) - subplot(2,3,6);stem(state.b3,'Markersize',2); + subplot(2,3,6);stem(obj.b3,'Markersize',2); title('DFE coeff nl 3rd') xlabel('coefficient index'); ylabel('value'); set(gca,'Fontsize',12) set(gcf,'Position',[200 500 700 400]) end if obj.l1act - neg_lin = find(abs(state.e) < obj.thres(1)); - neg_2nd = find(abs(state.e2) < obj.thres(2)); - neg_3rd = find(abs(state.e3) < obj.thres(3)); + neg_lin = find(abs(obj.e) < obj.thres(1)); + neg_2nd = find(abs(obj.e2) < obj.thres(2)); + neg_3rd = find(abs(obj.e3) < obj.thres(3)); neg = [neg_lin;neg_2nd+obj.Ne(1);neg_3rd+obj.Ne(1)+N2]; % indices of the neglected coefficients - rel_lin = find(abs(state.e) >= obj.thres(1)); - rel_2nd = find(abs(state.e2) >= obj.thres(2)); - rel_3rd = find(abs(state.e3) >= obj.thres(3)); + rel_lin = find(abs(obj.e) >= obj.thres(1)); + rel_2nd = find(abs(obj.e2) >= obj.thres(2)); + rel_3rd = find(abs(obj.e3) >= obj.thres(3)); - state.coeff_number = length(rel_lin)+2*length(rel_2nd)+3*length(rel_3rd); + obj.coeff_number = length(rel_lin)+2*length(rel_2nd)+3*length(rel_3rd); rel = [rel_lin;rel_2nd+obj.Ne(1);rel_3rd+obj.Ne(1)+N2]; % indices of the relevant coefficients - e(neg) = 0; + e_(neg) = 0; ind_mat_2nd(neg_2nd,:) = []; @@ -250,24 +317,25 @@ classdef EQ %% decision directed mode if ~obj.DB_aim - constellation_in = unique(ref_in); % getting the symbol constellation from reference data + constellation_in_ = unique(ref_in); % getting the symbol constellation from reference data else if obj.M == 2 - constellation_in = [-3 -2 -1 0 1 2 3]/sqrt(5)*2; + constellation_in_ = [-3 -2 -1 0 1 2 3]/sqrt(5)*2; elseif obj.M == 2.5 - constellation_in = [-5 -4 -3 -2 -1 0 1 2 3 4 5]/sqrt(10)*2; + constellation_in_ = [-5 -4 -3 -2 -1 0 1 2 3 4 5]/sqrt(10)*2; elseif obj.M == 3 - constellation_in = [-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7]/sqrt(21)*2; + constellation_in_ = [-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7]/sqrt(21)*2; else - constellation_in = unique(ref_in); + constellation_in_ = unique(ref_in); end end - state.constellation_in = constellation_in; + obj.constellation_in = constellation_in_; + if obj.l1act - coeff = [e(rel);b]; % combine FFE and DFE coefficient vectors for DD mode + coeff = [e_(rel);b_]; % combine FFE and DFE coefficient vectors for DD mode else - coeff = [e;b]; + coeff = [e_;b_]; end for dd_loop = 1:obj.dd_loops @@ -277,20 +345,21 @@ classdef EQ D_2 = zeros(Nb2,1); D_3 = zeros(Nb3,1); - if all(obj.mu == obj.mu(1)) - mu_mat = obj.mu(1); + if all(obj.DDmu == obj.DDmu(1)) + mu_mat = obj.DDmu(1); else if obj.l1act - mu_mat = diag([ones(1,length(rel_lin))*obj.mu(1) ones(1,length(rel_2nd))*obj.mu(2) ones(1,length(rel_3rd))*obj.mu(3) ones(1,obj.Nb)*obj.mu(4)]); + mu_mat = diag([ones(1,length(rel_lin))*obj.DDmu(1) ones(1,length(rel_2nd))*obj.DDmu(2) ones(1,length(rel_3rd))*obj.DDmu(3) ones(1,obj.Nb)*obj.DDmu(4)]); else - mu_mat = diag([ones(1,obj.Ne(1))*obj.mu(1) ones(1,N2)*obj.mu(2) ones(1,N3)*obj.mu(3) ones(1,obj.Nb(1)+Nb2+Nb3)*obj.mu(4)]); + mu_mat = diag([ones(1,obj.Ne(1))*obj.DDmu(1) ones(1,N2)*obj.DDmu(2) ones(1,N3)*obj.DDmu(3) ones(1,obj.Nb(1)+Nb2+Nb3)*obj.DDmu(4)]); end end if obj.load_decisions pathn = evalin('base','modeldir'); temp = load([pathn, 'MLSE_out', '.mat']) ; - eval(['dd_out_vals = temp.', 'a', ';']) ; + %eval(['dd_out_vals = temp.', 'a', ';']) ; + dd_out_vals=temp.a; dd_out = zeros(size(data_in)); dd_out(1:2:length(data_in)) = dd_out_vals; else @@ -300,7 +369,7 @@ classdef EQ for k = 1:obj.K:length(data_in) m=m+1; % Symbol index X_1 = data(obj.Ne(1)+k-1:-1:k).'; - [X_2,X_3] = calc_nl_vecs(X_1,ind_mat_2nd,ind_mat_3rd,norm_fac2,norm_fac3,delta_2,delta_3,cplx); + [X_2,X_3] = obj.calc_nl_vecs(X_1,ind_mat_2nd,ind_mat_3rd,norm_fac2,norm_fac3,delta_2,delta_3,cplx); if obj.l1act input_vec = [X_1(rel_lin);X_2;X_3;-dd_DFE;-D_2;-D_3]; @@ -311,18 +380,18 @@ classdef EQ output_vec(m) = e_dc + input_vec.'*coeff; if ~obj.load_decisions - [~,dd_idx] = min(abs(output_vec(m) - constellation_in)); % decision for closest constellation point - dd_out(k) = constellation_in(dd_idx); + [~,dd_idx] = min(abs(output_vec(m) - constellation_in_)); % decision for closest constellation point + dd_out(k) = constellation_in_(dd_idx); end if obj.Nb(1) > 0 dd_DFE(2:end) = dd_DFE(1:end-1); dd_DFE(1) = dd_out(k); - if obj.error_free && m > state.k0 - dd_DFE(1) = ref_in(m-state.k0); + if obj.ideal_dfe && m > obj.k0 + dd_DFE(1) = ref_in(m-obj.k0); end - [D_2,D_3] = calc_nl_vecs(dd_DFE,ind_mat_DFE_2nd,ind_mat_DFE_3rd,norm_fac_DFE2,norm_fac_DFE3,delta_DFE2,delta_DFE3,cplx); + [D_2,D_3] = obj.calc_nl_vecs(dd_DFE,ind_mat_DFE_2nd,ind_mat_DFE_3rd,norm_fac_DFE2,norm_fac_DFE3,delta_DFE2,delta_DFE3,cplx); end % if dd_loop ~= 21 error = output_vec(m) - dd_out(k); @@ -335,18 +404,96 @@ classdef EQ % save_ind = save_ind+1; if mu_mat ~= 0 - e_dc = e_dc - obj.dcmu*error; + e_dc = e_dc - obj.DCmu*error; end end end + + % shifting the output sequence by k0 symbols + yout = (circshift(output_vec.',-(obj.k0))).'; %(circshift(dd_out.',-(obj.k0))).'; + + e_ = coeff(1:end-obj.Nb(1)-Nb2-Nb3); + b_ = coeff(end-obj.Nb(1)-Nb2-Nb3+1:end); + + if obj.l1act + obj.e = e_(1:length(rel_lin)); + obj.e2 = e_(length(rel_lin)+1:length(rel_lin)+length(rel_2nd)); + obj.e3 = e_(length(rel_lin)+length(rel_2nd)+1:end); + else + obj.e = e_(1:obj.Ne(1)); + obj.e2 = e_(obj.Ne(1)+1:obj.Ne(1)+N2); + obj.e3 = e_(obj.Ne(1)+N2+1:end); + end + obj.b = b_(1:obj.Nb(1)); + obj.b2 = b_(obj.Nb(1)+1:obj.Nb(1)+Nb2); + obj.b3 = b_(obj.Nb(1)+Nb2+1:end); + + % plot the final coefficients after DD mode + if obj.plotfinal + figure(8054) + if obj.l1act + subplot(2,3,1); stem(rel_lin,obj.e,'Markersize',2); + title('FFE coeff linear') + xlabel('coefficient index'); ylabel('value'); set(gca,'Fontsize',12) + subplot(2,3,2); stem(rel_2nd,obj.e2,'Markersize',2); + title('FFE coeff nl 2nd') + xlabel('coefficient index'); ylabel('value'); set(gca,'Fontsize',12) + subplot(2,3,3); stem(rel_3rd,obj.e3,'Markersize',2); + title('FFE coeff nl 3rd') + xlabel('coefficient index'); ylabel('value'); set(gca,'Fontsize',12) + subplot(2,3,4);stem(obj.b,'Markersize',2); + title('DFE coeff linear') + xlabel('coefficient index'); ylabel('value'); set(gca,'Fontsize',12) + subplot(2,3,5);stem(obj.b2,'Markersize',2); + title('DFE coeff nl 2nd') + xlabel('coefficient index'); ylabel('value'); set(gca,'Fontsize',12) + subplot(2,3,6);stem(obj.b3,'Markersize',2); + title('DFE coeff nl 3rd') + xlabel('coefficient index'); ylabel('value'); set(gca,'Fontsize',12) + else + subplot(2,3,1); stem(obj.e/max(e_),'Markersize',2); + title('FFE coeff linear') + xlabel('coefficient index'); ylabel('value'); set(gca,'Fontsize',12) + subplot(2,3,2); stem(obj.e2,'Markersize',2); + title('FFE coeff nl 2nd') + xlabel('coefficient index'); ylabel('value'); set(gca,'Fontsize',12) + subplot(2,3,3); stem(obj.e3,'Markersize',2); + title('FFE coeff nl 3rd') + xlabel('coefficient index'); ylabel('value'); set(gca,'Fontsize',12) + subplot(2,3,4);stem(obj.b,'Markersize',2); + title('DFE coeff linear') + xlabel('coefficient index'); ylabel('value'); set(gca,'Fontsize',12) + subplot(2,3,5);stem(obj.b2,'Markersize',2); + title('DFE coeff nl 2nd') + xlabel('coefficient index'); ylabel('value'); set(gca,'Fontsize',12) + subplot(2,3,6);stem(obj.b3,'Markersize',2); + title('DFE coeff nl 3rd') + xlabel('coefficient index'); ylabel('value'); set(gca,'Fontsize',12) + end + set(gcf,'Position',[1000 500 700 400]) + end + + % save frequency response to the work space + if obj.save_taps + % save the FFE coefficients to the work space + % pathn = evalin('base','modeldir'); + % eval([obj.field_ffe, ' = obj.e ;']) ; + % eval([obj.field_dfe, ' = b ;']) ; + % eval(['save(''', pathn, '\',obj.filen,''', ''', obj.field_ffe,''', ''',obj.field_dfe,''') ;']) ; + + save("coefficients",obj.e, obj.b); + end + + else + yout = data_in; end end - function [X_2,X_3] = calc_nl_vecs(X_1,ind_mat_2,ind_mat_3,norm_fac2,norm_fac3,delta_2,delta_3,cplx) + function [X_2,X_3] = calc_nl_vecs(obj,X_1,ind_mat_2,ind_mat_3,norm_fac2,norm_fac3,delta_2,delta_3,cplx) % calculation of the vectors containing all combinations of input symbols % of second and third order based on the linear symbols @@ -370,7 +517,7 @@ classdef EQ end end - function [ind_mat_2nd,ind_mat_3rd] = calc_ind(Ne2,N2,Ne3,N3,mode2nd,mode3rd,len_2nd,len_3rd,cplx) + function [ind_mat_2nd,ind_mat_3rd] = calc_ind(obj,Ne2,N2,Ne3,N3,mode2nd,mode3rd,len_2nd,len_3rd,cplx) if Ne2 > 0 ind_mat_2nd = NaN(N2,2); @@ -498,7 +645,7 @@ classdef EQ end - function [ind_mat_2nd,ind_mat_3rd] = calc_DFE_ind(Ne2,N2,Ne3,N3) + function [ind_mat_2nd,ind_mat_3rd] = calc_DFE_ind(obj,Ne2,N2,Ne3,N3) if Ne2 > 0 ind_mat_2nd = NaN(N2,2); diff --git a/Classes/Electricalsignal.m b/Classes/Electricalsignal.m index defadb1..61b872c 100644 --- a/Classes/Electricalsignal.m +++ b/Classes/Electricalsignal.m @@ -1,25 +1,45 @@ classdef Electricalsignal < Signal %ELECTRICALSIGNAL Summary of this class goes here % Detailed explanation goes here - + properties - + fs end - + methods - function obj = Electricalsignal(signal) + function obj = Electricalsignal(signal, options) %ELECTRICALSIGNAL Construct an instance of this class % Detailed explanation goes here + arguments + signal + options.fs + options.logbook + end + obj = obj@Signal(signal); + fn = fieldnames(options); + + for l = 1:numel(fn) + obj.(fn{l}) = options.(fn{l}); + end + end - - function outputArg = method1(obj,inputArg) - %METHOD1 Summary of this method goes here - % Detailed explanation goes here - outputArg = obj.Property1 + inputArg; + + + function pow = power(obj) + + pow = mean(abs(obj.signal),"all") ; + end + function obj = normalize(obj) + + obj.signal = obj.signal/sqrt(mean(abs(obj.signal),"all")); + + end + + end end diff --git a/Classes/Fiber.m b/Classes/Fiber.m index 30ff317..3e65728 100644 --- a/Classes/Fiber.m +++ b/Classes/Fiber.m @@ -51,7 +51,21 @@ classdef Fiber end - function opt_out = process(obj,opt_in) + function signalclass_out = process(obj,signalclass_in) + + % actual processing of the signal (steps 1. - 3.) + signalclass_in.signal = obj.process_(signalclass_in.signal); + + % append to logbook + lbdesc = ['Fiber ']; + signalclass_in = signalclass_in.logbookentry(lbdesc); + + % write to output + signalclass_out = signalclass_in; + + end + + function opt_out = process_(obj,opt_in) %METHOD1 Summary of this method goes here % Detailed explanation goes here @@ -62,7 +76,6 @@ classdef Fiber obj.linstep = -obj.alpha_lin/2 - 2*1j*pi^2*obj.b2*faxis.^2 - 4/3*1j*pi^3*obj.b3*faxis.^3; - opt_out = obj.NLSE(opt_in); %attenuate nase diff --git a/Classes/Filter.m b/Classes/Filter.m index 1ea009f..e5fa121 100644 --- a/Classes/Filter.m +++ b/Classes/Filter.m @@ -40,7 +40,21 @@ classdef Filter end - function yout = process(obj,xin) + function signalclass_out = process(obj,signalclass_in) + + % actual processing of the signal + signalclass_in.signal = obj.process_(signalclass_in.signal); + + % append to logbook + filterdesc = [num2str(obj.filtdegree),'. order ',char(obj.filterType),' filter with f_cutoff at ', num2str(obj.f_cutoff*1e-9), ' GHz.']; + signalclass_in = signalclass_in.logbookentry(filterdesc); + + % write to output + signalclass_out = signalclass_in; + + end + + function yout = process_(obj,xin) obj.signal_length = length(xin); diff --git a/Classes/Informationsignal.m b/Classes/Informationsignal.m index f204a4e..b3c7940 100644 --- a/Classes/Informationsignal.m +++ b/Classes/Informationsignal.m @@ -3,8 +3,8 @@ classdef Informationsignal < Signal % Detailed explanation goes here properties - nase - lambda_nm + + end methods @@ -15,11 +15,18 @@ classdef Informationsignal < Signal end - function outputArg = method1(obj,inputArg) - %METHOD1 Summary of this method goes here - % Detailed explanation goes here - outputArg = obj.Property1 + inputArg; + function pow = power(obj) + + pow = mean(abs(obj.signal),"all") ; + end + + function obj = normalize(obj) + + obj.signal = obj.signal/sqrt(mean(abs(obj.signal),"all")); + + end + end end diff --git a/Classes/Opticalsignal.m b/Classes/Opticalsignal.m index cf2f648..8b58ea9 100644 --- a/Classes/Opticalsignal.m +++ b/Classes/Opticalsignal.m @@ -4,24 +4,45 @@ classdef Opticalsignal < Signal properties nase - lambda_nm + lambda + fs + end methods - function obj = Opticalsignal(signal, fsym, fsimu) + function obj = Opticalsignal(signal, options) %OPTICALSIGNAL Construct an instance of this class % Detailed explanation goes here - obj = obj@Signal(signal, fsym, fsimu); + arguments + signal + options.fs + options.logbook + options.lambda + options.nase + end + + obj = obj@Signal(signal); + + fn = fieldnames(options); + + for l = 1:numel(fn) + obj.(fn{l}) = options.(fn{l}); + end + - obj.nase = 0; - obj.lambda_nm = []; - end - function outputArg = method1(obj,inputArg) - %METHOD1 Summary of this method goes here - % Detailed explanation goes here - outputArg = obj.Property1 + inputArg; + + function obj = normalize(obj) + + obj.signal = obj.signal/sqrt(mean(abs(obj.signal).^2)); + + end + + function pow = power(obj) + + pow = mean(abs(obj.signal.^2)) ; + end end end diff --git a/Classes/PAMmapper.m b/Classes/PAMmapper.m new file mode 100644 index 0000000..462b61e --- /dev/null +++ b/Classes/PAMmapper.m @@ -0,0 +1,183 @@ +classdef PAMmapper + %PAMMAPPER Summary of this class goes here + % Detailed explanation goes here + + properties + M + unipolar + thresholds + end + + methods + function obj = PAMmapper(M, unipolar) + %PAMMAPPER Construct an instance of this class + % Detailed explanation goes here + obj.M = M; + obj.unipolar = unipolar; + + obj.thresholds = obj.get_demodulation_thresholds(); + + end + + function signalclass_out = map(obj,signalclass_in) + signalclass_in.signal = obj.map_(signalclass_in.signal); + signalclass_in = signalclass_in.logbookentry(); + signalclass_out = signalclass_in; + end + + function signalclass_out = demap(obj,signalclass_in) + signalclass_in.signal = obj.demap_(signalclass_in.signal); + signalclass_in = signalclass_in.logbookentry(); + signalclass_out = signalclass_in; + end + + function pam_sig = map_(obj,bitpattern) + + switch log2(obj.M) + case 1 + % 2-ASK: BPSK / OOK + pam_sig=bitpattern(:,1); + + if obj.unipolar==0 + pam_sig=2*pam_sig-1; + end + + case 2 + % 4-ASK: + pam_sig=2*bitpattern(:,1)+(bitpattern(:,1)==bitpattern(:,2)); + + if obj.unipolar==0 + pam_sig=2*pam_sig-3; + end + + + case 3 + % 8-ASK: + x1 = bitpattern(:,1); + x2 = (bitpattern(:,1)==bitpattern(:,3)); + x3 = x2~=bitpattern(:,2); + + pam_sig = 4*x1 + 2*x2 + x3; + + if obj.unipolar==0 + pam_sig=2*pam_sig-7; + end + + + case 4 + % 16-ASK: + x1 = bitpattern(:,1); + x2 = (bitpattern(:,1)==bitpattern(:,4)); + x3 = x2~=bitpattern(:,3); + x4 = x3~=bitpattern(:,2); + + pam_sig = 8*x1 + 4*x2 + 2*x3 + x4; + + if obj.unipolar==0 + pam_sig=2*pam_sig-15; + end + + end + end + + function thres = get_demodulation_thresholds(obj) + %simply get the obj.thresholdseshold values for PAM + + %28.03.2023 - Silas Oett. - Extracted from digi_demod.m + % + + obj.thresholds = 0; + + switch log2(obj.M) + + case 1 + % 2-ASK + + if obj.unipolar + thres=0.5; + else %bi polar + thres=0; + end + + case 2 + % 4-ASK + if obj.unipolar==0 + thres=[-2,0,2]; + elseif obj.unipolar==1 + thres=[0.5,1.5,2.5]; + end + + + case 3 + % 8-ASK + if obj.unipolar==0 + thres=-6:2:6; + elseif obj.unipolar==1 + thres=0.5:6.5; + end + + case 4 + % 16-ASK + if obj.unipolar==0 && scale_mode==1 + thres=-14:2:14; + elseif obj.unipolar==1 && scale_mode==1 + thres=0.5:14.5; + end + + end + + end + + function [data_out] = demap_(obj,data_in) + + data_in= data_in'; + % create output + if ~isempty(obj.thresholds) + a = squeeze(repmat(real(data_in),[1 1 length(obj.thresholds)])); %Eingangssignal in 3 spalten + b = squeeze(repmat(reshape(obj.thresholds(:).',[1 1 length(obj.thresholds)]),[1 length(data_in) 1])); %Threshold in 3 Spalten + comp_real = a > b; %check for each symbol/ sampling if it exeeds the obj.thresholdseshold 1, 2 or 3 + + comp_real=repmat(real(data_in),[1 1 length(obj.thresholds)]) > repmat(reshape(obj.thresholds(:).',[1 1 length(obj.thresholds)]),[1 length(data_in) 1]); + + else + comp_real=[]; + end + + s1=size(comp_real,1); + s2=size(comp_real,2); + + + switch log2(obj.M) + + case 1 + % 2-ASK + + data_out=comp_real(:,:,1); + + case 2 + % 4-ASK + + data_out=[comp_real(:,:,2); ones(s1,s2)-comp_real(:,:,1)+comp_real(:,:,3)]; + + + case 3 + % 8-ASK + data_out=[comp_real(:,:,4); + comp_real(:,:,1)-comp_real(:,:,3)+comp_real(:,:,5)-comp_real(:,:,7); + 1-comp_real(:,:,2)+comp_real(:,:,6)]; + + case 4 + % 16-ASK + data_out=[comp_real(:,:,8); + comp_real(:,:,1)-comp_real(:,:,3)+comp_real(:,:,5)-comp_real(:,:,7)+comp_real(:,:,9)-comp_real(:,:,11)+comp_real(:,:,13)-comp_real(:,:,15); + comp_real(:,:,2)-comp_real(:,:,6)+comp_real(:,:,10)-comp_real(:,:,14); + 1-comp_real(:,:,4)+comp_real(:,:,12)]; + end + + + end + + end + +end + diff --git a/Classes/Photodiode.m b/Classes/Photodiode.m index 9d69308..c48b7cc 100644 --- a/Classes/Photodiode.m +++ b/Classes/Photodiode.m @@ -28,7 +28,24 @@ classdef Photodiode end - function yout = process(obj,xin) + function signalclass_out = process(obj,signalclass_in) + + % actual processing of the signal (steps 1. - 3.) + signalclass_in.signal = obj.process_(signalclass_in.signal); + + % cast the inform. signal to electrical signal + [signalclass_in, nase, lambda] = Electricalsignal(signalclass_in,"fs",obj.fsimu,"logbook",signalclass_in.logbook); + + % append to logbook + lbdesc = ['Photo Diode ']; + signalclass_in = signalclass_in.logbookentry(lbdesc); + + % write to output + signalclass_out = signalclass_in; + + end + + function yout = process_(obj,xin) %METHOD1 Summary of this method goes here % Detailed explanation goes here diff --git a/Classes/Scope.m b/Classes/Scope.m index c3506c3..99712a0 100644 --- a/Classes/Scope.m +++ b/Classes/Scope.m @@ -68,18 +68,32 @@ classdef Scope end - function yout = process(obj,xin) - %METHOD1 Summary of this method goes here - % Detailed explanation goes here + function signalclass_out = process(obj,signalclass_in) % apply LPF lpf = Filter('filtdegree',4,"f_cutoff",obj.lpf_bw,"fsamp",obj.fsimu,"filterType",obj.filtertype); - yout = lpf.process(xin); + signalclass_in = lpf.process(signalclass_in); + + % actual processing of the signal + signalclass_in.signal = obj.process_(signalclass_in.signal); + + % append to logbook + lbdesc = ['Scope ']; + signalclass_in = signalclass_in.logbookentry(lbdesc); + + % write to output + signalclass_out = signalclass_in; + + end + + function yout = process_(obj,xin) + %METHOD1 Summary of this method goes here + % Detailed explanation goes here % sample signal % TODO: implement and test the delays. Also look for delay of % lpf filter - yout = obj.sampleSignal(yout); + yout = obj.sampleSignal(xin); % quantize signal yout = obj.quantize(yout); @@ -118,7 +132,7 @@ classdef Scope %calc number of samples after down-sampling no offset obj.Nout = ceil((Tsig - fracdelay)*obj.fadc) ; - %build a jitter vector + %build a jitter vector jitvec = obj.buildSamplingJitterVector(); % Create the index vector of the sampling instances for the real and imaginary part diff --git a/Classes/Signal.m b/Classes/Signal.m index f0f4cb1..bdc666f 100644 --- a/Classes/Signal.m +++ b/Classes/Signal.m @@ -1,47 +1,152 @@ classdef Signal %SIGNAL Summary of this class goes here % Detailed explanation goes here - + properties signal - fsym - fsimu + logbook end - + methods function obj = Signal(signal) %SIGNAL Construct an instance of this class % Detailed explanation goes here obj.signal = signal; - - obj.fsym = 0; - obj.fsimu = 0; + SignalType = []; + TimeStamp = []; + Length = []; + SignalPower = []; + Nase = []; + Description = []; + + obj.logbook = table(SignalType,TimeStamp,Length,SignalPower,Nase,Description); end - function [e_sig, nase, lambda_nm] = Electricalsignal(obj) + function [i_sig, varargout] = Informationsignal(obj) + + if isa(obj,'Electricalsignal') + + %convert to optical + disp("Convert signal: elec. -> info.!"); + varargout{1} = obj.fs; + i_sig = Informationsignal(obj.signal); + + elseif isa(obj,'Opticalsignal') + + error("Cannot convert from optical- to informationsignal. Use O/E conversion first."); + + end + + end + + function [e_sig, varargout] = Electricalsignal(obj,options) + + arguments + obj + options.fs + options.logbook + end + + obj.logbook = options.logbook; if isa(obj,'Opticalsignal') + %convert to electrical disp("Convert signal: opt. -> elec. Fetch all properties (e.g. nase)!"); - nase = obj.nase; - lambda_nm = obj.lambda_nm; - e_sig = Electricalsignal(obj.signal,obj.fsym, obj.fsimu); + varargout{1} = obj.nase; + varargout{2} = obj.lambda; + e_sig = Electricalsignal(obj.signal,"fs",obj.fs,"logbook",obj.logbook); + + elseif isa(obj,'Informationsignal') + + try + % specify fs at varargin{1} + e_sig = Electricalsignal(obj.signal,"fs",options.fs,"logbook",options.logbook); + catch + error("Signal Conversion failed [I -> E] "); + end + end - + end - function o_sig = Opticalsignal(obj) + function o_sig = Opticalsignal(obj, options) + + arguments + obj + options.fs + options.logbook + options.nase + options.lambda + end + + fn = fieldnames(options); + + for l = 1:numel(fn) + try + obj.(fn{l}) = options.(fn{l}); + end + end + if isa(obj,'Electricalsignal') + %convert to optical disp("Convert signal: elec. -> opt.!"); - o_sig = Opticalsignal(obj.signal,obj.fsym, obj.fsimu); + + o_sig = Opticalsignal(obj.signal,"fs",obj.fs,"lambda",options.lambda,"logbook",obj.logbook,"nase",options.nase); + + + elseif isa(obj,'Informationsignal') + + error("Cannot convert from information- to opticalsignal. Use E/O conversion first."); + end + end - function normalizedsignal = signal_(obj) - normalizedsignal = obj.signal / norm(obj.signal); + + function return_length = length(obj) + %METHOD1 Summary of this method goes here + % Detailed explanation goes here + return_length = length(obj.signal); + end + + function obj = logbookentry(obj,varargin) + + if nargin > 1 + Description = varargin{1}; + else + Description = ""; + end + + SignalType = [string(class(obj))]; + TimeStamp = [(datetime('now','TimeZone','local','Format','HH:mm:ss'))]; + Length = [obj.length]; + SignalPower = [obj.power]; + Nase = [0]; + + cell = {SignalType , TimeStamp , Length , SignalPower , Nase, Description}; + + obj.logbook = [obj.logbook;cell]; + + end + + function obj = resample(obj,options) + + arguments + obj Signal + options.fs_in double + options.fs_out double + end + + obj.signal = resample(obj.signal,options.fs_out,options.fs_in); + + desc = ['resample signal from ', num2str(options.fs_in*1e-9), ' GHz to ', num2str(options.fs_out*1e-9), ' GHz' ]; + + obj = obj.logbookentry(desc); + end end diff --git a/Functions/.DS_Store b/Functions/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f7b81c2a077a6fc55ecbc243057b33a4e7fe5794 GIT binary patch literal 6148 zcmeHK%}T>S5T0$TO({YT3VK`cTClbLftOJ03mDOZN^NLqgE3pu)Er77cYPsW#OHBl zcO#bCgBOu91GC@k>`a#V5_YlxAllP@6QBkF4k}@xg2N9&>!eFkupUC8pD_g=x)8$v z#!J!c_>TbsISttnnwMJ&h^ZKQ*kQY z+TLt-a@wrRqqEk$E@#bV>##0Q8^`l`#o5_EIKS#Xh0l?CHJl3k{IqOY%;61<73IBn zaTKa(h!J^qp2f%vFaylMnloUJJ*T?nb#i&k05kA=2Izc{sD!S?%%DCxaG>8uS}zfj zpiOrPLTS;pm>I+s6k$>kO{%b03}MpIFKwJ_F*9h=LFk?FId*4ZZzw|Vj((}bLAVBa zWCoalMFxsyTBH7dx%&RUn8Y(?fEidT21Kdjb=p{x?X642QLmM#kEkRRml^y@K|{A< gjHOn*i>d|vk_<%GVrCFMDEuR!Y2bkw_)`Wx0c7`1-2eap literal 0 HcmV?d00001 diff --git a/Functions/settingsdlg/.gitignore b/Functions/settingsdlg/.gitignore new file mode 100644 index 0000000..5a7ccc8 --- /dev/null +++ b/Functions/settingsdlg/.gitignore @@ -0,0 +1,11 @@ +slprj/ +*.mexw32 +*.mexglx +*.mexmaci +*.mexw64 +*.mexmaci64 +*.mexa64 +*.zip +*.m~ +*.asv + diff --git a/Functions/settingsdlg/License.txt b/Functions/settingsdlg/License.txt new file mode 100644 index 0000000..b808cd3 --- /dev/null +++ b/Functions/settingsdlg/License.txt @@ -0,0 +1,26 @@ +Copyright (c) 2018, Rody Oldenhuis +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of this project. diff --git a/Functions/settingsdlg/README.md b/Functions/settingsdlg/README.md new file mode 100644 index 0000000..4016d9b --- /dev/null +++ b/Functions/settingsdlg/README.md @@ -0,0 +1,114 @@ +[![View Settings dialog on File Exchange](https://www.mathworks.com/matlabcentral/images/matlab-file-exchange.svg)](https://www.mathworks.com/matlabcentral/fileexchange/26312-settings-dialog) + + +[![Donate to Rody](https://i.stack.imgur.com/bneea.png)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=4M7RMVNMKAXXQ&source=url) + + +# FEX-settingsdlg + +The function settingsdlg() is a GUI-dialog much like MATLAB's default errordlg(), questiondlg() and warndlg(), which provides a standardized way to assign specific values to a structure. This structure can then be used to insert specific settings +into one of MATLAB's many standard algorithms, or your own. The most basic usage is as follows: + +[ settings, button] = settingsdlg(... +'TolX' , 1e-6,... +'TolFun', 1e-6); +which will produce a nice dialog box with the fields and edit boxes as you'd expect them. After pressing OK or Cancel, the structure settings will be + +settings = + +TolX: 1.0000e-006 +TolFun: 1.0000e-006 +button = +'ok' + +or any relevant values you have assigned. Naturally, you can add as many fields as you want; the dialog will automatically adjust its size to match your input. If you would like the user to not just insert numeric values, but select values from a +string list, use + +settings = settingsdlg(... +'TolX' , 1e-6,... +'TolFun' , 1e-6,... +'Algorithm', {'active-set','interior-point'}); + +which will produce the same dialog, with a popup-list added. The resulting structure in this case is: + +settings = + +TolX: 1.0000e-006 +TolFun: 1.0000e-006 +Algorithm: 'active-set' + +Of course, it isn't always convenient to have the text for each option in the dialog box equal to the fieldname in the resulting structure. If you want the fieldname to be different from the displayed string, you can use something like: + +settings = settingsdlg(... +{'Tolerance X' ;'TolX' }, 1e-6,... +{'Tolerance Fun';'TolFun'}, 1e-6,... +'Algorithm', {'active-set','interior-point'}); + +which produces the dialog displaying the *first* entries in the cell-arrays, but the associated structure has the fieldnames + +settings = + +TolX: 1.0000e-006 +TolFun: 1.0000e-006 +Algorithm: 'active-set' + +Also, you can add separators, a different dialog title, and a brief description: + +settings = settingsdlg(... +'Description', 'This dialog will set the parameters used by FMINCON()',... +'title' , 'FMINCON() options',... +'separator' , 'Unconstrained/General',... +{'Tolerance X' ;'TolX' }, 1e-6,... +{'Tolerance on Function';'TolFun'}, 1e-6,... +'Algorithm' , {'active-set','interior-point'},... +'separator' , 'Constrained',... +{'Tolerance on Constraint';'TolCon'}, 1e-6); + +The 'title' and 'description' options can appear anywhere in the argument list, they will not affect the fields in the output structure. The order of the 'separator' option of course *does* matter, but, it will *not* be added as a field to the output structure. You can also use logicals, which produce checkboxes: + +settings = settingsdlg(... +'Description', 'This dialog will set the parameters used by FMINCON()',... +'title' , 'FMINCON() options',... +'separator' , 'Unconstrained/General',... +{'Tolerance X';'TolX'}, 1e-6,... +{'Tolerance on Function';'TolFun'}, 1e-6,... +'Algorithm' , {'active-set','interior-point'},... +'separator' , 'Constrained',... +{'This is a checkbox'; 'Check'}, true,... +{'Tolerance on Constraints';'TolCon'}, 1e-6); + +which results in + +settings = + +TolX: 1.0000e-006 +TolFun: 1.0000e-006 +Algorithm: 'active-set' +Check: 1 +TolCon: 1.0000e-006 + +You can also assign multiple (logical!) values to a single checkbox, in which case the fields below the checkbox are all disabled/enabled when you check it: + +settings = settingsdlg(... +'Description', 'This dialog will set the parameters used by FMINCON()',... +'title' , 'FMINCON() options',... +'separator' , 'Unconstrained/General',... +{'This is a checkbox'; 'Check'}, [true, true],... +{'Tolerance X';'TolX'}, 1e-6,... +{'Tolerance on Function';'TolFun'}, 1e-6,... +'Algorithm' , {'active-set','interior-point'},... +'separator' , 'Constrained',... +{'Tolerance on Constraints';'TolCon'}, 1e-6); + +Setting the checkbox value to [true, true] will cause the dialog box to appear with all fields below the appropriate separator disabled, whereas a value of [true, false] will have all fields initially enabled. Checking or un-checking the checkbox will simply swap the enabled/disabled states. + +Finally, you can insert a single structure as a (single!) argument, which produces a dialog box according to its settings and fieldnames: + +settings = struct(... +'TolX' , 1e-6,... +'TolFun', 1e-6); +settings = settingsdlg(settings); + +Naturally, since all other information is absent in this last example, the functionality in this case is rather limited. But if the intent is to change a fairly simple structure, it certainly suffices. + +If you like this work, please consider [a donation](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=4M7RMVNMKAXXQ&source=url). diff --git a/Functions/settingsdlg/Screen.png b/Functions/settingsdlg/Screen.png new file mode 100644 index 0000000000000000000000000000000000000000..394da5cc9500c3ae53c3221d11dbda6aaf8d20fe GIT binary patch literal 5208 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 literal 0 HcmV?d00001 diff --git a/Functions/settingsdlg/settingsdlg.m b/Functions/settingsdlg/settingsdlg.m new file mode 100644 index 0000000..b0098ca --- /dev/null +++ b/Functions/settingsdlg/settingsdlg.m @@ -0,0 +1,488 @@ +function [settings, button] = settingsdlg(varargin) +% SETTINGSDLG Default dialog to produce a settings-structure +% +% settings = SETTINGSDLG('fieldname', default_value, ...) creates a modal +% dialog box that returns a structure formed according to user input. The +% input should be given in the form of 'fieldname', default_value - pairs, +% where 'fieldname' is the fieldname in the structure [settings], and +% default_value the initial value displayed in the dialog box. +% +% SETTINGSDLG uses UIWAIT to suspend execution until the user responds. +% +% settings = SETTINGSDLG(settings) uses the structure [settings] to form +% the various input fields. This is the most basic (and limited) usage of +% SETTINGSDLG. +% +% [settings, button] = SETTINGSDLG(settings) returns which button was +% pressed, in addition to the (modified) structure [settings]. Either 'ok', +% 'cancel' or [] are possible values. The empty output means that the +% dialog was closed before either Cancel or OK were pressed. +% +% SETTINGSDLG('title', 'window_title') uses 'window_title' as the dialog's +% title. The default is 'Adjust settings'. +% +% SETTINGSDLG('description', 'brief_description',...) starts the dialog box +% with 'brief_description', followed by the input fields. +% +% SETTINGSDLG('windowposition', P, ...) positions the dialog box according to +% the string or vector [P]; see movegui() for valid values. +% +% SETTINGSDLG( {'display_string', 'fieldname'}, default_value,...) uses the +% 'display_string' in the dialog box, while assigning the corresponding +% user-input to fieldname 'fieldname'. +% +% SETTINGSDLG(..., 'checkbox_string', true, ...) displays a checkbox in +% stead of the default edit box, and SETTINGSDLG('fieldname', {'string1', +% 'string2'},... ) displays a popup box with the strings given in +% the second cell-array. +% +% Additionally, you can put [..., 'separator', 'seperator_string',...] +% anywhere in the argument list, which will divide all the arguments into +% sections, with section headings 'seperator_string'. +% +% You can also modify the display behavior in the case of checkboxes. When +% defining checkboxes with a 2-element logical array, the second boolean +% determines whether all fields below that checkbox are initially disabled +% (true) or not (false). +% +% Example: +% +% [settings, button] = settingsdlg(... +% 'Description', 'This dialog will set the parameters used by FMINCON()',... +% 'title' , 'FMINCON() options',... +% 'separator' , 'Unconstrained/General',... +% {'This is a checkbox'; 'Check'}, [true true],... +% {'Tolerance X';'TolX'}, 1e-6,... +% {'Tolerance on Function';'TolFun'}, 1e-6,... +% 'Algorithm' , {'active-set','interior-point'},... +% 'separator' , 'Constrained',... +% {'Tolerance on Constraints';'TolCon'}, 1e-6) +% +% See also inputdlg, dialog, errordlg, helpdlg, listdlg, msgbox, questdlg, textwrap, +% uiwait, warndlg. + + +% Please report bugs and inquiries to: +% +% Name : Rody P.S. Oldenhuis +% E-mail : oldenhuis@gmail.com +% Licence: 2-clause BSD (See Licence.txt) + + +% If you find this work useful, please consider a donation: +% https://www.paypal.me/RodyO/3.5 + + %% Initialize + + % errortraps + narg = nargin; + if verLessThan('MATLAB', '8.6') + error(nargchk(1, inf, narg, 'struct')); %#ok + else + narginchk(1, inf); + end + + % parse input (+errortrap) + have_settings = 0; + if isstruct(varargin{1}) + settings = varargin{1}; have_settings = 1; end + if (narg == 1) + if isstruct(varargin{1}) + parameters = fieldnames(settings); + values = cellfun(@(x)settings.(x), parameters, 'UniformOutput', false); + else + error('settingsdlg:incorrect_input',... + 'When pasing a single argument, that argument must be a structure.') + end + else + parameters = varargin(1+have_settings : 2 : end); + values = varargin(2+have_settings : 2 : end); + end + + % Initialize data + button = []; + fields = cell(numel(parameters),1); + tags = fields; + + % Fill [settings] with default values & collect data + for ii = 1:numel(parameters) + + % Extract fields & tags + if iscell(parameters{ii}) + tags{ii} = parameters{ii}{1}; + fields{ii} = parameters{ii}{2}; + else + % More errortraps + if ~ischar(parameters{ii}) + error('settingsdlg:nonstring_parameter',... + 'Arguments should be given as [''parameter'', value,...] pairs.') + end + tags{ii} = parameters{ii}; + fields{ii} = parameters{ii}; + end + + % More errortraps + if ~ischar(fields{ii}) + error('settingsdlg:fieldname_not_char',... + 'Fieldname should be a string.') + end + if ~ischar(tags{ii}) + error('settingsdlg:tag_not_char',... + 'Display name should be a string.') + end + + % NOTE: 'Separator' is now in 'fields' even though + % it will not be used as a fieldname + + % Make sure all fieldnames are properly formatted + % (alternating capitals, no whitespace) + if ~strcmpi(fields{ii}, {'Separator';'Title';'Description'}) + whitespace = isspace(fields{ii}); + capitalize = circshift(whitespace,[0,1]); + fields{ii}(capitalize) = upper(fields{ii}(capitalize)); + fields{ii} = fields{ii}(~whitespace); + % insert associated value in output + if iscell(values{ii}) + settings.(fields{ii}) = values{ii}{1}; + elseif (length(values{ii}) > 1) + settings.(fields{ii}) = values{ii}(1); + else + settings.(fields{ii}) = values{ii}; + end + end + end + + % Avoid (some) confusion + clear parameters + + % Use default colorscheme from the OS + bgcolor = get(0, 'defaultUicontrolBackgroundColor'); + % Default fontsize + fontsize = get(0, 'defaultuicontrolfontsize'); + % Edit-bgcolor is platform-dependent. + % MS/Windows: white. + % UNIX: same as figure bgcolor +% if ispc, edit_bgcolor = 'White'; +% else edit_bgcolor = bgcolor; +% end + +% TODO: not really applicable since defaultUicontrolBackgroundColor +% doesn't really seem to work on Unix... +edit_bgcolor = 'White'; + + % Get basic window properties + title = getValue('Adjust settings', 'Title'); + description = getValue( [], 'Description'); + total_width = getValue(325, 'WindowWidth'); + control_width = getValue(100, 'ControlWidth'); + + % Window positioning: + % Put the window in the center of the screen by default. + % This will usually work fine, except on some multi-monitor setups. + scz = get(0, 'ScreenSize'); + scxy = round(scz(3:4)/2-control_width/2); + scx = min(scz(3),max(1,scxy(1))); + scy = min(scz(4),max(1,scxy(2))); + + % String to pass on to movegui + window_position = getValue('center', 'WindowPosition'); + + + % Calculate best height for all uicontrol() + control_height = max(18, (fontsize+6)); + + % Calculate figure height (will be adjusted later according to description) + total_height = numel(fields)*1.25*control_height + ... % to fit all controls + 1.5*control_height + 20; % to fit "OK" and "Cancel" buttons + + % Total number of separators + num_separators = nnz(strcmpi(fields,'Separator')); + + % Draw figure in background + fighandle = figure(... + 'integerhandle' , 'off',... % use non-integers for the handle (prevents accidental plots from going to the dialog) + 'Handlevisibility', 'off',... % only visible from within this function + 'position' , [scx, scy, total_width, total_height],...% figure position + 'visible' , 'off',... % hide the dialog while it is being constructed + 'backingstore' , 'off',... % DON'T save a copy in the background + 'resize' , 'off', ... % but just keep it resizable + 'renderer' , 'zbuffer', ... % best choice for speed vs. compatibility + 'WindowStyle' ,'modal',... % window is modal + 'units' , 'pixels',... % better for drawing + 'DockControls' , 'off',... % force it to be non-dockable + 'name' , title,... % dialog title + 'menubar' ,'none', ... % no menubar of course + 'toolbar' ,'none', ... % no toolbar + 'NumberTitle' , 'off',... % "Figure 1.4728...:" just looks corny + 'color' , bgcolor); % use default colorscheme + + %% Draw all required uicontrols(), and unhide window + + % Define X-offsets (different when separators are used) + separator_offset_X = 2; + if num_separators > 0 + text_offset_X = 20; + text_width = (total_width-control_width-text_offset_X); + else + text_offset_X = separator_offset_X; + text_width = (total_width-control_width); + end + + % Handle description + description_offset = 0; + if ~isempty(description) + + % create textfield (negligible height initially) + description_panel = uicontrol(... + 'parent' , fighandle,... + 'style' , 'text',... + 'Horizontalalignment', 'left',... + 'position', [separator_offset_X,... + total_height,total_width,1]); + + % wrap the description + description = textwrap(description_panel, {description}); + + % adjust the height of the figure + textheight = size(description,1)*(fontsize+6); + description_offset = textheight + 20; + total_height = total_height + description_offset; + set(fighandle,... + 'position', [scx, scy, total_width, total_height]) + + % adjust the position of the textfield and insert the description + set(description_panel, ... + 'string' , description,... + 'position', [separator_offset_X, total_height-textheight, ... + total_width, textheight]); + end + + % Define Y-offsets (different when descriptions are used) + control_offset_Y = total_height-control_height-description_offset; + + % initialize loop + controls = zeros(numel(tags)-num_separators,1); + ii = 1; sep_ind = 1; + enable = 'on'; separators = zeros(num_separators,1); + + % loop through the controls + if numel(tags) > 0 + while true + + % Should we draw a separator? + if strcmpi(tags{ii}, 'Separator') + + % Print separator + uicontrol(... + 'style' , 'text',... + 'parent' , fighandle,... + 'string' , values{ii},... + 'horizontalalignment', 'left',... + 'fontweight', 'bold',... + 'position', [separator_offset_X,control_offset_Y-4, ... + total_width, control_height]); + + % remove separator, but save its position + fields(ii) = []; + tags(ii) = []; separators(sep_ind) = ii; + values(ii) = []; sep_ind = sep_ind + 1; + + % reset enable (when neccessary) + if strcmpi(enable, 'off') + enable = 'on'; end + + % NOTE: DON'T increase loop index + + % ... or a setting? + else + + % logicals: use checkbox + if islogical(values{ii}) + + % First draw control + controls(ii) = uicontrol(... + 'style' , 'checkbox',... + 'parent' , fighandle,... + 'enable' , enable,... + 'string' , tags{ii},... + 'value' , values{ii}(1),... + 'position', [text_offset_X,control_offset_Y-4, ... + total_width, control_height]); + + % Should everything below here be OFF? + if (length(values{ii})>1) + % turn next controls off when asked for + if values{ii}(2) + enable = 'off'; end + % Turn on callback function + set(controls(ii),... + 'Callback', @(varargin) EnableDisable(ii,varargin{:})); + end + + % doubles : use edit box + % cells : use popup + % cell-of-cells: use table + else + % First print parameter + uicontrol(... + 'style' , 'text',... + 'parent' , fighandle,... + 'string' , [tags{ii}, ':'],... + 'horizontalalignment', 'left',... + 'position', [text_offset_X,control_offset_Y-4, ... + text_width, control_height]); + + % Popup, edit box or table? + style = 'edit'; + draw_table = false; + if iscell(values{ii}) + style = 'popup'; + if all(cellfun('isclass', values{ii}, 'cell')) + draw_table = true; end + end + + % Draw appropriate control + if ~draw_table + controls(ii) = uicontrol(... + 'enable' , enable,... + 'style' , style,... + 'Background', edit_bgcolor,... + 'parent' , fighandle,... + 'string' , values{ii},... + 'position', [text_width,control_offset_Y,... + control_width, control_height]); + else + % TODO + % ...table? ...radio buttons? How to do this? + warning(... + 'settingsdlg:not_yet_implemented',... + 'Treatment of cells is not yet implemented.'); + + end + end + + % increase loop index + ii = ii + 1; + end + + % end loop? + if ii > numel(tags) + break, end + + % Decrease offset + control_offset_Y = control_offset_Y - 1.25*control_height; + end + end + + % Draw cancel button + uicontrol(... + 'style' , 'pushbutton',... + 'parent' , fighandle,... + 'string' , 'Cancel',... + 'position', [separator_offset_X,2, total_width/2.5,control_height*1.5],... + 'Callback', @Cancel) + + % Draw OK button + uicontrol(... + 'style' , 'pushbutton',... + 'parent' , fighandle,... + 'string' , 'OK',... + 'position', [total_width*(1-1/2.5)-separator_offset_X,2, ... + total_width/2.5,control_height*1.5],... + 'Callback', @OK) + + % move to center of screen and make visible + movegui(fighandle, window_position); + set(fighandle, 'Visible', 'on'); + + % WAIT until OK/Cancel is pressed + uiwait(fighandle); + + + + %% Helper funcitons + + % Get a value from the values array: + % - if it does not exist, return the default value + % - if it exists, assign it and delete the appropriate entries from the + % data arrays + function val = getValue(default, tag) + index = strcmpi(fields, tag); + if any(index) + val = values{index}; + values(index) = []; + fields(index) = []; + tags(index) = []; + else + val = default; + end + end + + %% callback functions + + % Enable/disable controls associated with (some) checkboxes + function EnableDisable(which, varargin) %#ok + + % find proper range of controls to switch + if (num_separators > 1) + range = (which+1):(separators(separators > which)-1); + else range = (which+1):numel(controls); + end + + % enable/disable these controls + if strcmpi(get(controls(range(1)), 'enable'), 'off') + set(controls(range), 'enable', 'on') + else + set(controls(range), 'enable', 'off') + end + end + + % OK button: + % - update fields in [settings] + % - assign [button] output argument ('ok') + % - kill window + function OK(varargin) %#ok + + % button pressed + button = 'OK'; + + % fill settings + for i = 1:numel(controls) + + % extract current control's string, value & type + str = get(controls(i), 'string'); + val = get(controls(i), 'value'); + style = get(controls(i), 'style'); + + % popups/edits + if ~strcmpi(style, 'checkbox') + % extract correct string (popups only) + if strcmpi(style, 'popupmenu'), str = str{val}; end + % try to convert string to double + val = str2double(str); + % insert this double in [settings]. If it was not a + % double, insert string instead + if ~isnan(val), settings.(fields{i}) = val; + else settings.(fields{i}) = str; + end + + % checkboxes + else + % we can insert value immediately + settings.(fields{i}) = val; + end + end + + % kill window + delete(fighandle); + end + + % Cancel button: + % - assign [button] output argument ('cancel') + % - delete figure (so: return default settings) + function Cancel(varargin) %#ok + button = 'cancel'; + delete(fighandle); + end + +end diff --git a/Functions/settingsdlg/settingsdlg.odt b/Functions/settingsdlg/settingsdlg.odt new file mode 100644 index 0000000000000000000000000000000000000000..18e4a1c64434df0ff0af450ed0e113d87f3b49cb GIT binary patch literal 57539 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 EKNHBYX8-^I literal 0 HcmV?d00001 diff --git a/Functions/settingsdlg/settingsdlg.pdf b/Functions/settingsdlg/settingsdlg.pdf new file mode 100644 index 0000000000000000000000000000000000000000..907063f0d19eb43bf0f4688087ee09c131d4cebe GIT binary patch literal 129042 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