Save multiple plots to a specific path.
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Abhilash Sukumari
am 17 Jun. 2015
Bearbeitet: Abhilash Sukumari
am 18 Jun. 2015
Intro: fairly new to matlab coming from mathematica environment.
Question: I have to calculate based on (x,y) 2D data and plot the same with the answer from the calculation shown on every plot. Assuming I have 10 2D arrays that needs to a FWHM calculation and the FWHM answer written to all of them and saved.
Code below for FWHM function:
function width = fwhm(x,y)% Define function for FWHM at 50%
y = y / max(y); % Normalize to 1 so that half max=0.5
N = length(y); % Max length of Y
MicroscopeMag=10; % Magnification of objective
PixelWidth=7.8; % Pixel Pitch is 7.8 Microns - Hamamatsu.
%------- identifies the centre of the peak ---------------%
[~,centerindex] = max(y);% Find center peak and coordinate
%------- Identifies the last index position before half-maximum ------%
%----- Have a range containing the leading edge of the signal -----%
i = 2;
while sign(y(i)-0.5) == sign(y(i-1)-0.5) %trying to see the curve raise
i = i+1;
end
%-----Interpolate the exact point(s) where the signal's value would be 0.5-----%
%----- The next 2 lines are an attempt to determine in fractions of an
%Index exactly where the line would cross the 0.5 value.
%Simple linear interpolation -----%
interp = (0.5-y(i-1)) / (y(i)-y(i-1));
%(gives us the delta_y between the two values either side)/(shortfall)
%=linearly interpolate how far between the two index positions we should go to hit exactly 0.5
tlead = x(i-1) + interp*(x(i)-x(i-1));
% Works out the corresponding delta_x, which gives you the actual distance in terms of the timebase.
i=centerindex+1;
%------- start search for next crossing at center--------------------%
%------- Repeat process for trailing edge --------------------%
while ((sign(y(i)-0.5) == sign(y(i-1)-0.5)) && (i <= N-1))
i = i+1;
end
if i ~= N
interp = (0.5-y(i-1)) / (y(i)-y(i-1));
ttrail = x(i-1) + interp*(x(i)-x(i-1));
% Lateral Magnification x Pixel pitch of 7.8 microns.
width=((ttrail - tlead)/MicroscopeMag)*PixelWidth;
end
Code to calculate the FWHM for every 2D array
clear all;
a=1;
while a<=10;
filename=strcat('S',num2str(a),'.csv');
Array=csvread(filename,15,0);
x = Array(:, 1);
y = Array(:, 2);
fwhm(x,y)
a = a+1;
end
The 10 files are in the zip attached here.
1 Kommentar
Akzeptierte Antwort
Walter Roberson
am 18 Jun. 2015
for a = 1 : 10
filename = sprintf('S%d.csv', a);
Array=csvread(filename,15,0);
x = Array(:, 1);
y = Array(:, 2);
width = fwhm(x,y);
outputs = [num2cell(x), num2cell(y)];
outputs{3,1} = width;
newfilename = sprintf('Snew%d.csv', a);
xlswrite(newfilename, outputs);
end
1 Kommentar
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Hamamatsu Hardware finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
