Initial commit of existing script and example data
This commit is contained in:
		
							parent
							
								
									64bae0700a
								
							
						
					
					
						commit
						a139d10bf6
					
				
							
								
								
									
										139
									
								
								EPR_script.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										139
									
								
								EPR_script.m
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,139 @@ | |||||||
|  | % high-spin S=1 simulation | ||||||
|  | % Go through the script line by line. Every "return" stops it. | ||||||
|  | % When you have completed the task, comment out that "return" | ||||||
|  | % so the script runs to the next "return" | ||||||
|  | % An important part of your task is to understand the script. | ||||||
|  | % I will be asking you about this in the exam. | ||||||
|  | % This will be easier for those of you who attended the simulation session. | ||||||
|  | 
 | ||||||
|  | clear all | ||||||
|  | close all | ||||||
|  | 
 | ||||||
|  | %% Baseline Correcting | ||||||
|  | load '..\..\Messdaten\TR_EPR\EMX_Aufbau\HU_F2\HU_F2_435nm.mat' % check this matches the name of your data file | ||||||
|  | 
 | ||||||
|  | whos % what variables have been loaded | ||||||
|  | params % what information is contained in the structure called 'params' | ||||||
|  | 
 | ||||||
|  |  % plot the raw data & check the number of points before the signal (pre-trigger) | ||||||
|  | % plot(Data) | ||||||
|  | % return | ||||||
|  | 
 | ||||||
|  |  % substract the pre-trigger. Check how many points from the plot above | ||||||
|  | signal_baseline_field = bsxfun(@minus, Data, mean(Data(1:1100,:))); | ||||||
|  | % plot(signal_baseline_field) % plot the corrected data set | ||||||
|  | % return | ||||||
|  | 
 | ||||||
|  |  % plot the transpose and check the number of points to the lower and higher fields of the signal | ||||||
|  | % plot(signal_baseline_field') | ||||||
|  | % use the smaller value below | ||||||
|  | % return | ||||||
|  | 
 | ||||||
|  |  % BASLINE correction | ||||||
|  | time_points = 140; % number of points from the plot above | ||||||
|  | l1 = mean(signal_baseline_field(:,1:time_points),2); % calculate the mean on the left along the time axis | ||||||
|  | l2 = mean(signal_baseline_field(:,end-time_points:end),2); %calculate the mean on the right along the time axis | ||||||
|  | baseline_time = (l1 +l2)/2; %take the average | ||||||
|  | 
 | ||||||
|  | signal_baseline_field_time = bsxfun(@minus, signal_baseline_field, baseline_time); % subtract the background in the time-domain  | ||||||
|  | 
 | ||||||
|  |  % plot the corrected data set | ||||||
|  | % plot(signal_baseline_field_time') | ||||||
|  | % return | ||||||
|  | 
 | ||||||
|  |  % plot the transpose to find the region of maximum signal. Use this below | ||||||
|  | % plot(signal_baseline_field_time) | ||||||
|  | % return | ||||||
|  | 
 | ||||||
|  |  % contour plot: The index gives the number of contours | ||||||
|  | % contourf(signal_baseline_field_time,6) | ||||||
|  | % return | ||||||
|  | 
 | ||||||
|  | %% | ||||||
|  | figure(1) | ||||||
|  | set(gcf,'PaperUnits','centimeters') | ||||||
|  | set(gcf,'Position',[0,0,750, 750]) | ||||||
|  | set(gcf,'InvertHardcopy','off','Color',[1 1 1]) | ||||||
|  | set(0,'DefaultAxesFontSize', 14,'DefaultAxesLineWidth',2) | ||||||
|  | 
 | ||||||
|  |  % contour plot: add the time and field axes | ||||||
|  | subplot(2,1,2) | ||||||
|  | contourf(0.1*params.Field_Vector, TimeBase*1e6 ,signal_baseline_field_time,'LineColor','none') | ||||||
|  | 
 | ||||||
|  |  % contour plot: add the time and field axes | ||||||
|  | % surf(0.1*params.Field_Vector, TimeBase*1e6 ,signal_baseline_field_time) | ||||||
|  | % colormap default | ||||||
|  | % shading interp | ||||||
|  | 
 | ||||||
|  | xlabel('Magnetic Field / mT') | ||||||
|  | ylabel('Time / \mus') | ||||||
|  | % colorbar | ||||||
|  | % print('TR_EPR_Chichibabin_80K_frozen_solution_532_01_3D' , '-dpng', '-r300') | ||||||
|  | % return | ||||||
|  | 
 | ||||||
|  | subplot(2,1,1) | ||||||
|  | 
 | ||||||
|  |  % take the mean over the maxium region. You can decide how wide it is | ||||||
|  | signal_baseline_field_time_mean = (mean(signal_baseline_field_time(1300:1390,:))); | ||||||
|  |  % normalise the amplitude to 1 | ||||||
|  | signal_baseline_field_time_mean_norm = signal_baseline_field_time_mean/max(signal_baseline_field_time_mean); | ||||||
|  |  % plot the spectrum | ||||||
|  | plot(0.1*params.Field_Vector,signal_baseline_field_time_mean_norm,'LineWidth',2) | ||||||
|  | 
 | ||||||
|  | xlabel('Magnetic Field / mT') | ||||||
|  | 
 | ||||||
|  | axis('tight') | ||||||
|  | box off | ||||||
|  | return | ||||||
|  | 
 | ||||||
|  | % print('TR_EPR_Chichibabin_80K_frozen_solution_570_01' , '-dpng', '-r300') | ||||||
|  | return | ||||||
|  | %% Simulation section. Use the "Run Section" button to avoid running the previous section every time | ||||||
|  | 
 | ||||||
|  | Exp.mwFreq = params.mwFreq; % GHz | ||||||
|  | Exp.nPoints = length(params.Field_Vector); | ||||||
|  | Exp.CenterSweep = 0.1*[params.Field_Center params.Field_Sweep]; % mT (converted from Gauss) | ||||||
|  | Exp.Harmonic = 0; % zeroth harmonic | ||||||
|  | 
 | ||||||
|  | Exp.Temperature = [0 0.67 0.33]; % populations of the triplet sub-levels. These need to be varied manually to get the right shape | ||||||
|  | 
 | ||||||
|  | Sys.S = 1; % Total Spin | ||||||
|  | Sys.g = 1.9951; % needs to be optimised | ||||||
|  | Sys.D = [2148.02 75.35]; % mT; The D and E values need to be optimised | ||||||
|  | Sys.lw = [8.1034 0]; % mT; linewidth needs to be optimised | ||||||
|  | 
 | ||||||
|  | Vary.g = 0.01;  | ||||||
|  | Vary.D = [10 10]; | ||||||
|  | Vary.lw = [1 0]; | ||||||
|  | 
 | ||||||
|  | FitOpt.Method = 'simplex fcn'; | ||||||
|  | FitOpt.Scaling = 'lsq'; | ||||||
|  | 
 | ||||||
|  |  % When you have got a good fit by eye, use esfit to optimise | ||||||
|  | % esfit('pepper',signal_baseline_field_time_mean_norm,Sys,Vary,Exp,[],FitOpt);%fitting route | ||||||
|  | % return | ||||||
|  | 
 | ||||||
|  | [bfield,spec] = pepper(Sys,Exp); % perform a simulation with the parameters above | ||||||
|  | spec_norm = spec/max(spec); % normalize the simulation | ||||||
|  | 
 | ||||||
|  | figure(2) | ||||||
|  | set (gcf,'PaperUnits','centimeters') | ||||||
|  | set (gcf,'Position',[-900,100,800,400]) % set the position, size and shape of the plot | ||||||
|  | set (gcf,'InvertHardcopy','off','Color',[1 1 1]) | ||||||
|  | set(0,'DefaultAxesFontSize', 16,'DefaultAxesLineWidth',1.5) | ||||||
|  | 
 | ||||||
|  | plot(0.1*params.Field_Vector,signal_baseline_field_time_mean_norm,'r', bfield,spec_norm,'b','LineWidth',1); | ||||||
|  | axis('tight') | ||||||
|  | 
 | ||||||
|  | legend('experimental','simulation') | ||||||
|  | legend boxoff | ||||||
|  | xlabel('Magnetic Field / mT') | ||||||
|  | ylabel('EPR signal / A. U.') | ||||||
|  | set(gca,'Box','Off','XMinorTick','On',... | ||||||
|  |     'YMinorTick','On','TickDir','Out','YColor','k') | ||||||
|  | return | ||||||
|  | 
 | ||||||
|  | set(gcf,'Units','Inches'); | ||||||
|  | pos = get(gcf,'Position'); | ||||||
|  | set(gcf,'PaperPositionMode','Auto','PaperUnits','Inches','PaperSize',[pos(3), pos(4)]); | ||||||
|  | print(gcf,'..\Abbildungen\Regression5','-dpdf','-r0'); | ||||||
							
								
								
									
										
											BIN
										
									
								
								example_data.mat
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								example_data.mat
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user