List of commits:
Subject Hash Author Date (UTC)
Add test: Ensure orthonormality is checked for mode functions (instead of columns of mode fct matrices) aa1dd49269c45e2e070f4ab5cdef23a59246ae65 Jason Hoelscher-Obermaier 2017-03-22 10:33:40
Bug fix in calculate_mode_vectors_gammalist.m aa18a37ba8fd5108c5fa47f48bffcf021a4534bd Jason Hoelscher-Obermaier 2017-03-22 09:50:15
Copy mechadd.mat (file with info reg. higher mechanical modes) to simulation output folder 595b486a19a22f66bedd754780cb38dac6d523e6 Jason Hoelscher-Obermaier 2017-03-17 15:53:03
Improve orthonormilsation b84ccfcaf4ec12a6136f954670d3147b406096eb corentin-gut 2017-03-17 14:59:20
Bug fix in method trace_out of entanglement_evaluation 84cd317f423b6b630298a2847b4f2fada16da8d1 Jason Hoelscher-Obermaier 2017-03-10 14:57:19
Check existence of target folder before attempting export in plot-methods 37fd86f5719898bd98c5c43114a54cec714f1bca Jason Hoelscher-Obermaier 2017-03-10 07:37:09
Add method trace_out to entanglement_evaluation 16ae2b0839d365791a3cb453156f28148eac3ff8 Jason Hoelscher-Obermaier 2017-03-08 18:38:07
Add options to plotLogneg.m 58b734d54c58bfb48573aadbd9c803b0eb7fd66a Jason Hoelscher-Obermaier 2017-03-06 12:29:49
Remove dual-rail-homo-correction for shotnoise data 81c3101807e555dfada6eaa1e587678f6e15ea5a Jason Hoelscher-Obermaier 2017-03-01 16:23:20
Adapt extension of log.neg. to negative values in the multimode case 6a0c1da7950c8b42768dac230e4f4c16c716ec07 Jason Hoelscher-Obermaier 2017-03-01 13:47:44
Replace matlab_xunit by newer version and register as submodule 9632e49f347b134641aee897729b05ad6db2cef4 Jason Hoelscher-Obermaier 2017-03-01 08:51:41
Adapt entanglement_evaluation_test to potential change in relative sign of mode fcts 994e925215553d620a8cf6a6c1dcac3d3a0b46bb Jason Hoelscher-Obermaier 2017-02-28 17:06:30
Add test for checking result of mode function calculation 808efd738f0056c2f61a1fb93ca39163ef4a699d Jason Hoelscher-Obermaier 2017-02-28 16:33:16
Insures accurate ON and improve speed f285f3fb89a63b3f01c4a9e54cc97218bf9407eb Jason Hoelscher-Obermaier 2017-02-24 16:51:21
Toggle matrix size mismatch e5dc8b2e1509750d4c2d32bd037d9eab5932da63 Jason Hoelscher-Obermaier 2017-02-24 16:44:00
ON-isation algorithm, much (~100 times) slower than m_gs but yields far (~1e14 times) better orthogonality precision. 8794b11475ada039c000bdc314e7c4ddd4f32b64 Jason Hoelscher-Obermaier 2017-02-21 13:02:13
When m_GS fails to pass ON-ity test, the ON-isation is done with Householder method (which is slower, but not dramatically slower). ON_ity is tested again after Householder. cf29269fae6d698ddb7e4cc8e831db3933325c2d Jason Hoelscher-Obermaier 2017-02-21 11:00:35
Add test for pulse_pairs_coverage to entanglement_evaluation_test.m e3e72443e0acce38cf9de712f32dd57dde7f069a Jason Hoelscher-Obermaier 2017-02-18 17:52:05
Refactor: Improve folder structure of repository ba05dd281e1351d6524058fc395912ea2da25e3a Jason Hoelscher-Obermaier 2017-02-18 15:33:57
Move importCrossCorrelationFunctions to @entanglement_evaluation_obsolete a7eeed4248479b1a6ef4c5f7895cc723f0cd0c0b Jason Hoelscher-Obermaier 2017-02-18 15:32:41
Commit aa1dd49269c45e2e070f4ab5cdef23a59246ae65 - Add test: Ensure orthonormality is checked for mode functions (instead of columns of mode fct matrices)
- i.e. if there are e.g. 6 mode functions à 500 samples, the matrix to check should be 6x6 and not 500x500
Author: Jason Hoelscher-Obermaier
Author date (UTC): 2017-03-22 10:33
Committer name: Jason Hoelscher-Obermaier
Committer date (UTC): 2017-03-22 10:33
Parent(s): aa18a37ba8fd5108c5fa47f48bffcf021a4534bd
Signer:
Signing key:
Signing status: N
Tree: 52d05a38350ea56b9aebc0e2b87ad726d527855f
File Lines added Lines deleted
data_analysis/auxfunctions/orthonormality/assert_orthonormality.m 7 7
data_analysis/auxfunctions/orthonormality/orthonormality.m 8 8
data_analysis/unittests/entanglement_evaluation_test.m 10 2
File data_analysis/auxfunctions/orthonormality/assert_orthonormality.m changed (mode: 100644) (index 0250778..5316acf)
1 function assert_orthonormality(Q, norm_tol, orthog_tol)
1 function on_info = assert_orthonormality(Q, norm_tol, orthog_tol)
2 2 % Asserts that the rows of matrix Q are mutually orthonormal % Asserts that the rows of matrix Q are mutually orthonormal
3 3 % within numerical tolerances specified by 'norm_tol' and 'orthog_tol' % within numerical tolerances specified by 'norm_tol' and 'orthog_tol'
4 4 % If the assertion fails, additional information is displayed % If the assertion fails, additional information is displayed
5 5 % about the cause of the failure and the size of the deviation % about the cause of the failure and the size of the deviation
6 6
7 7 failure = false; failure = false;
8 [~, orthog, normal, info] = orthonormality(Q, norm_tol, orthog_tol);
8 [~, orthog, normal, on_info] = orthonormality(Q, norm_tol, orthog_tol);
9 9
10 10 if ~orthog if ~orthog
11 11 failure = true; failure = true;
12 12
13 13 % display info about the cause and size of failure % display info about the cause and size of failure
14 [deviations, sortorder] = sort(info.orthog.deviations, 'descend');
15 off_cols = info.orthog.offenders.cols(sortorder);
16 off_rows = info.orthog.offenders.rows(sortorder);
14 [deviations, sortorder] = sort(on_info.orthog.deviations, 'descend');
15 off_cols = on_info.orthog.offenders.cols(sortorder);
16 off_rows = on_info.orthog.offenders.rows(sortorder);
17 17
18 18 disp(['\nPairs of rows violating orthogonality & amount of violation:',10,... disp(['\nPairs of rows violating orthogonality & amount of violation:',10,...
19 19 '(sorted in order of decreasing violation)']) '(sorted in order of decreasing violation)'])
 
... ... function assert_orthonormality(Q, norm_tol, orthog_tol)
27 27 failure = true; failure = true;
28 28
29 29 % display info about the cause and size of failure % display info about the cause and size of failure
30 [deviations, sortorder] = sort(info.norm.deviations, 'descend');
31 offenders = info.norm.offenders(sortorder);
30 [deviations, sortorder] = sort(on_info.norm.deviations, 'descend');
31 offenders = on_info.norm.offenders(sortorder);
32 32
33 33 disp(['Rows violating normality and amount of violation:',10,... disp(['Rows violating normality and amount of violation:',10,...
34 34 '(sorted in order of decreasing violation)']) '(sorted in order of decreasing violation)'])
File data_analysis/auxfunctions/orthonormality/orthonormality.m changed (mode: 100644) (index 4460e50..d05e4db)
1 function [orthonorm, orthog, normal, info] = orthonormality(Q, norm_tol, orthog_tol)
1 function [orthonorm, orthog, normal, on_info] = orthonormality(Q, norm_tol, orthog_tol)
2 2 % [orthonorm, orthog, normal, info] = orthonormality(Q, norm_tol, orthog_tol) % [orthonorm, orthog, normal, info] = orthonormality(Q, norm_tol, orthog_tol)
3 3 % returns a boolean 'orthonorm' indicating whether the rows of matrix Q % returns a boolean 'orthonorm' indicating whether the rows of matrix Q
4 4 % are orthonormal within numerical tolerances norn_tol and orthog_tol. % are orthonormal within numerical tolerances norn_tol and orthog_tol.
 
... ... function [orthonorm, orthog, normal, info] = orthonormality(Q, norm_tol, orthog_
15 15 % from 1 (assesses the normalisation) and if the non-diagonal elements are % from 1 (assesses the normalisation) and if the non-diagonal elements are
16 16 % within a tolerence 'orthog_tol' from 0 (assesses orthogonality). % within a tolerence 'orthog_tol' from 0 (assesses orthogonality).
17 17
18 info = {};
18 on_info = {};
19 19
20 20 A=Q*Q'; A=Q*Q';
21
21 on_info.matrix_size = size(A);
22 22
23 23 norm_deviations = (abs(diag(A)-1)); norm_deviations = (abs(diag(A)-1));
24 24 norm_violations = find(norm_deviations > norm_tol); norm_violations = find(norm_deviations > norm_tol);
25 25 normal = isempty(norm_violations); normal = isempty(norm_violations);
26 26
27 27 if ~normal if ~normal
28 info.norm.offenders = norm_violations;
29 info.norm.deviations = norm_deviations(norm_violations);
28 on_info.norm.offenders = norm_violations;
29 on_info.norm.deviations = norm_deviations(norm_violations);
30 30
31 31 % figure % figure
32 32 % title('abs deviation from normalisation'); % title('abs deviation from normalisation');
 
... ... orthog_deviations = abs(tril(A,-1));
41 41 orthog = isempty(orthog_viol_rows); orthog = isempty(orthog_viol_rows);
42 42
43 43 if ~orthog if ~orthog
44 info.orthog.offenders.cols = orthog_viol_cols;
45 info.orthog.offenders.rows = orthog_viol_rows;
44 on_info.orthog.offenders.cols = orthog_viol_cols;
45 on_info.orthog.offenders.rows = orthog_viol_rows;
46 46
47 47 orthog_critical_devs = zeros(size(orthog_viol_rows)); orthog_critical_devs = zeros(size(orthog_viol_rows));
48 48 for k=1:length(orthog_viol_rows) for k=1:length(orthog_viol_rows)
 
... ... if ~orthog
50 50 col = orthog_viol_cols(k); col = orthog_viol_cols(k);
51 51 orthog_critical_devs(k) = orthog_deviations(row, col); orthog_critical_devs(k) = orthog_deviations(row, col);
52 52 end end
53 info.orthog.deviations = orthog_critical_devs;
53 on_info.orthog.deviations = orthog_critical_devs;
54 54 end end
55 55
56 56
File data_analysis/unittests/entanglement_evaluation_test.m changed (mode: 100644) (index 4883f0d..50ee99d)
... ... function modefunctions_test(shared)
149 149 'relative', tol); 'relative', tol);
150 150
151 151 %figure; plot(real(ev.readout_modes')) %figure; plot(real(ev.readout_modes'))
152 % check orthonormality
152
153 %%% check that the orthonormality test does the right thing
153 154 on_matrix_entangling = ev.entangling_modes*(ev.entangling_modes)'; on_matrix_entangling = ev.entangling_modes*(ev.entangling_modes)';
155 [modefct_no, samples_per_pulse] = size(ev.entangling_modes);
156 assertEqual(size(on_matrix_entangling), modefct_no*[1,1])
157 norm_tol = inf; orthog_tol = inf; % don't care about precision here, only about checking rows vs checking columns
158 on_info = assert_orthonormality(ev.readout_modes,norm_tol, orthog_tol);
159 assertEqual(on_info.matrix_size, modefct_no*[1,1])
160 %%%%
161
162 % check orthonormality
154 163 on_matrix_readout = ev.readout_modes*(ev.readout_modes)'; on_matrix_readout = ev.readout_modes*(ev.readout_modes)';
155 164 for k=1:ev.pulse_gammas_no for k=1:ev.pulse_gammas_no
156 165 start_mode = (k-1)*ev.mech_frequencies_no + 1; start_mode = (k-1)*ev.mech_frequencies_no + 1;
 
... ... function efficiency_visibility_test_sub(ev, nu, eta)
700 709 % disp([10, 10, '***************',10, prefix, 'correction performed as expected!',10]) % disp([10, 10, '***************',10, prefix, 'correction performed as expected!',10])
701 710
702 711 function traceout_test(shared) function traceout_test(shared)
703 clc
704 712 ev = run_quicker_test(shared); ev = run_quicker_test(shared);
705 713 % ev.mech_frequencies = [1.2, 2.3, 4.1,5.7]; % ev.mech_frequencies = [1.2, 2.3, 4.1,5.7];
706 714
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/gutc61/Membrane

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/gutc61/Membrane

Clone this repository using git:
git clone git://git.rocketgit.com/user/gutc61/Membrane

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main