List of commits:
Subject Hash Author Date (UTC)
Restore correct calculation of mode functions 70ae3d6ae7d2513d506cd400f72048e7c64e0def Jason Hoelscher-Obermaier 2016-06-07 13:37:44
Fix export of pulse quadratures f2d5f225c3f1c2c9a1313a1f63b4e5ef8c6e0ce3 Jason Hoelscher-Obermaier 2016-06-07 12:51:49
Auxfct for permuting data in several files ab144ff91342465644168d5e19691805bb1de3b7 Jason Hoelscher-Obermaier 2016-06-06 09:03:13
Correct permutation, add option for inverse permutation 6c615f43b7d08f0c29268a7b9216478b70dc0bb7 Jason Hoelscher-Obermaier 2016-06-06 08:54:21
Remove superfluous folder 3f32158ae47b1dabb7d207917ba9f28abfe346d3 Jason Hoelscher-Obermaier 2016-06-03 15:31:33
Add function to permute data from from q1...qn p1..pn.. to q1 p1... q1 p2 ... order 6d79e850ea8240822cae695b4daafd6a5594f578 Jason Hoelscher-Obermaier 2016-06-03 15:28:58
Add pseudohash as property to PXItrace 9893a652fbcd30d1c21555afc8feb1e89f2421f0 Jason Hoelscher-Obermaier 2016-06-03 15:25:33
Also hash the byte-size of files for added safety.. ddd093904a05897a12c74d070f812e5f2f4872dd Jason Hoelscher-Obermaier 2016-06-03 15:23:04
Add fct to compute quick "pseudo-hash" for (possibly large, binary) files f84b246eda5de28116596e77d418287743e71d1b Jason Hoelscher-Obermaier 2016-06-03 09:40:21
Mini-improvement in comments a11b66ab4ba137a9b160168152a3339da499eb7f Jason Hoelscher-Obermaier 2016-06-02 15:52:11
Simplifying test_dual_homo_measurement acc.to updated capabilities of homotrace.. e3a5010187332b91038ed5272a00d5150bd3e7bd Jason Hoelscher-Obermaier 2016-06-02 15:50:45
Re-adding prematurely dismissed functions d2bd6f498a7d4f93b7016debc3de0e02bed4f9f9 Jason Hoelscher-Obermaier 2016-06-02 15:50:06
Fix merge-induced bug in entanglement_evaluation.m ee40bc95ac59cbd95f13cf2aea409c187aca0003 Jason Hoelscher-Obermaier 2016-06-02 15:08:51
Add xUnit tests for entanglement_evaluation and dual_homo_measurement 4e9d4b0941db414b564116aa1f327752ad95a15b Jason Hoelscher-Obermaier 2016-05-25 10:18:19
Turn blocked_cross_correlation into a function of PXItraces 3391b939590e01224ff19ef3234248f43a2861e8 Jason Hoelscher-Obermaier 2016-06-01 16:25:55
Move testdata to subfolder data/ 47dcbd5cb08b5ff551d3659d6068a7987d596093 Jason Hoelscher-Obermaier 2016-06-01 12:43:04
Add auxfct for calculating estimated runtimes 08be90db79f14913f812b4a1f8d98ab2fad37164 Jason Hoelscher-Obermaier 2016-05-31 09:03:17
Ignore *.dat and *.tsv-files d69c991d7ed57278e7c17046ca6188a9ba46f2f7 Jason Hoelscher-Obermaier 2016-05-31 13:52:36
Move testdata to subfolder data/ 941df61741cd0680a566705d77ff48a9b501a5ee Jason Hoelscher-Obermaier 2016-05-31 13:50:27
Add 3rd party fct to conveniently compare structs 5b1ba7bdea4ec4d17c1a7c472c0ef3ddc69ca9ef Jason Hoelscher-Obermaier 2016-05-31 13:49:44
Commit 70ae3d6ae7d2513d506cd400f72048e7c64e0def - Restore correct calculation of mode functions
Author: Jason Hoelscher-Obermaier
Author date (UTC): 2016-06-07 13:37
Committer name: Jason Hoelscher-Obermaier
Committer date (UTC): 2016-06-07 13:37
Parent(s): f2d5f225c3f1c2c9a1313a1f63b4e5ef8c6e0ce3
Signer:
Signing key:
Signing status: N
Tree: b27b97959d7d2f9c4984f304dd74d056241eebf1
File Lines added Lines deleted
data_analysis/@entanglement_evaluation/calculateModeVectors.m 3 3
data_analysis/unittests/entanglement_evaluation_test.m 56 19
File data_analysis/@entanglement_evaluation/calculateModeVectors.m changed (mode: 100644) (index 505999e..d31d12b)
... ... function obj = calculateModeVectors(obj)
38 38 obj.entangling_modes = [obj.entangling_modes;... obj.entangling_modes = [obj.entangling_modes;...
39 39 transpose(entangling_mode_ON)]; transpose(entangling_mode_ON)];
40 40 end end
41 %% for tests with data from a damped harmonic oscillator
42 obj.entangling_modes(1,:) = fliplr(decay).*conj(rotation);
43 obj.readout_modes(1,:) = decay.*conj(rotation);
41 % %% for tests with data from a damped harmonic oscillator
42 % obj.entangling_modes(1,:) = fliplr(decay).*conj(rotation);
43 % obj.readout_modes(1,:) = decay.*conj(rotation);
44 44 end end
File data_analysis/unittests/entanglement_evaluation_test.m changed (mode: 100644) (index 0c909ea..ced7d29)
... ... function entanglement_evaluation_properties_test(shared)
70 70 ev = entanglement_evaluation_setup_test(shared); ev = entanglement_evaluation_setup_test(shared);
71 71 assertEqual(ev.samplingrate, shared.samplingrate); assertEqual(ev.samplingrate, shared.samplingrate);
72 72
73 function entanglement_evaluation_corrfct_test(shared)
73 function entanglement_evaluation_modefunctions_test(shared)
74 74 ev = entanglement_evaluation_setup_test(shared); ev = entanglement_evaluation_setup_test(shared);
75 ev.mech_frequencies = [1, 2, 3];
76 ev.opt_pulse_widths = ones(size(ev.mech_frequencies));
77 ev.pulse_gammas = logspace(-1,1,2);
78 ev.calculateModeVectors;
75 79
76 max_lags = 10;
77 ev.blocked_cross_correlation(max_lags);
78 xx = ev.correlation_functions{1}{1,1};
79 pp = ev.correlation_functions{1}{2,2};
80 xp = ev.correlation_functions{1}{1,2};
81 px = ev.correlation_functions{1}{2,1};
82 assertAlmostEqual(xx, flipud(xx));
83 assertAlmostEqual(pp, flipud(pp));
84 assertAlmostEqual(xp, flipud(px));
80 %figure; plot(real(ev.readout_modes'))
81 % check orthonormality
82 on_matrix_entangling = ev.entangling_modes*(ev.entangling_modes)';
83 on_matrix_readout = ev.readout_modes*(ev.readout_modes)';
84 for k=1:ev.pulse_gammas_no
85 start_mode = (k-1)*ev.mech_frequencies_no + 1;
86 stop_mode = k*ev.mech_frequencies_no;
87 assertAlmostEqual(...
88 on_matrix_entangling(start_mode:stop_mode,start_mode:stop_mode),...
89 eye(ev.mech_frequencies_no), 1e-12)
90 assertAlmostEqual(...
91 on_matrix_readout(start_mode:stop_mode,start_mode:stop_mode),...
92 eye(ev.mech_frequencies_no), 1e-12)
93 end
94
95 % check correct sidebands are addressed
96 tol = 1e-12;
97 mean_rotation_freq = @(vector)mean(diff(phase(vector))*shared.samplingrate)/(2*pi);
98 for f=1:ev.mech_frequencies_no
99 % entangling_modes should pick out down-scattered light --> should be prop. to exp(+i om t)
100 assertAlmostEqual(...
101 mean_rotation_freq(ev.entangling_modes(f,:)),...
102 -ev.mech_frequencies(f), tol)
103 % readout modes should pick out up-scattered light --> should be prop. to exp(-i om t)
104 assertAlmostEqual(...
105 mean_rotation_freq(ev.readout_modes(f,:)),...
106 +ev.mech_frequencies(f), tol)
107 % for some reasons it's exactly the other way round...
108 end
109 %figure; plot(phase(ev.readout_modes(1,1:100)))
85 110
86 xx_ = xcorr(shared.x.data, shared.x.data, max_lags);
87 xp_ = xcorr(shared.x.data, shared.p.data, max_lags);
88 assertAlmostEqual(xx, xx_);
89
90 rel_tol = 1e-12;
91 assertAlmostEqual(xp, xp_, rel_tol);
92
93 111 function entanglement_evaluation_run_test(shared) function entanglement_evaluation_run_test(shared)
94 112 ev = entanglement_evaluation_setup_test(shared); ev = entanglement_evaluation_setup_test(shared);
95 113 ev.evaluation_folder = shared.evaluation_folder; ev.evaluation_folder = shared.evaluation_folder;
 
... ... function entanglement_evaluation_run_test(shared)
100 118 ev.calculateModeVectors; ev.calculateModeVectors;
101 119 ev.calculatePulsedQuadratures(1); ev.calculatePulsedQuadratures(1);
102 120 ev.exportResults; ev.exportResults;
103
104 121 %type(fullfile(ev.evaluation_folder, 'evaluation_parameters.txt')) %type(fullfile(ev.evaluation_folder, 'evaluation_parameters.txt'))
105 122
106 123 function entanglement_evaluation_exportdata_test(shared) function entanglement_evaluation_exportdata_test(shared)
 
... ... function entanglement_evaluation_exportdata_test(shared)
134 151 assertEqual(dlmread(fullfile(ev.evaluation_folder, '01_02.tsv')), modes_after) assertEqual(dlmread(fullfile(ev.evaluation_folder, '01_02.tsv')), modes_after)
135 152
136 153 modes_after = repmat([31, 310, 32, 320, 3100, 31000, 3200, 32000], pulse_pairs_no, 1); modes_after = repmat([31, 310, 32, 320, 3100, 31000, 3200, 32000], pulse_pairs_no, 1);
137 assertEqual(dlmread(fullfile(ev.evaluation_folder, '01_03.tsv')), modes_after)
154 assertEqual(dlmread(fullfile(ev.evaluation_folder, '01_03.tsv')), modes_after)
155
156 function entanglement_evaluation_corrfct_test(shared)
157 ev = entanglement_evaluation_setup_test(shared);
158
159 max_lags = 10;
160 ev.blocked_cross_correlation(max_lags);
161 xx = ev.correlation_functions{1}{1,1};
162 pp = ev.correlation_functions{1}{2,2};
163 xp = ev.correlation_functions{1}{1,2};
164 px = ev.correlation_functions{1}{2,1};
165 assertAlmostEqual(xx, flipud(xx));
166 assertAlmostEqual(pp, flipud(pp));
167 assertAlmostEqual(xp, flipud(px));
168
169 xx_ = xcorr(shared.x.data, shared.x.data, max_lags);
170 xp_ = xcorr(shared.x.data, shared.p.data, max_lags);
171 assertAlmostEqual(xx, xx_);
172
173 rel_tol = 1e-12;
174 assertAlmostEqual(xp, xp_, rel_tol);
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