68 lines
2.9 KiB
Matlab
68 lines
2.9 KiB
Matlab
function [contrast_array, periodX_array, periodY_array] = analyzeGSWavefunction_multipleruns(folder_base_path, numberofruns, save_option)
|
|
|
|
% Extract the last two folder names from folder_base_path
|
|
folder_parts = strsplit(folder_base_path, '/');
|
|
if length(folder_parts) >= 2
|
|
video_name_base = strcat(folder_parts{end-1}, '_', folder_parts{end});
|
|
else
|
|
video_name_base = folder_parts{end}; % In case there's only one folder in the path
|
|
end
|
|
|
|
% Create the output video name with .mp4 extension (for video option)
|
|
output_video_name = strcat(video_name_base, '_wavefunction_analysis.mp4');
|
|
|
|
% Create the output folder name (for image saving option)
|
|
output_folder_name = strcat(video_name_base, '_wavefunction_analysis_images');
|
|
if strcmp(save_option, 'images') && ~exist(output_folder_name, 'dir')
|
|
mkdir(output_folder_name); % Create the folder if it doesn't exist
|
|
end
|
|
|
|
% Initialize arrays to store contrast, periodX, and periodY for each run
|
|
contrast_array = zeros(1, numberofruns);
|
|
periodX_array = zeros(1, numberofruns);
|
|
periodY_array = zeros(1, numberofruns);
|
|
|
|
% Set up video writer if the user chooses 'video'
|
|
if strcmp(save_option, 'video')
|
|
videoObj = VideoWriter(output_video_name, 'MPEG-4'); % Create a video file object
|
|
videoObj.FrameRate = 1; % Set the frame rate (adjust as needed)
|
|
videoObj.Quality = 100; % Maximum quality (for compression)
|
|
open(videoObj); % Open the video file for writing
|
|
end
|
|
|
|
% Loop through all the runs and process each folder
|
|
for run_index = 1:numberofruns
|
|
% Call the function that processes the wavefunction data
|
|
[contrast, periodX, periodY] = Scripts.analyzeGSWavefunction(folder_base_path, run_index-1);
|
|
|
|
% Store the results in the arrays
|
|
contrast_array(run_index) = contrast;
|
|
periodX_array(run_index) = periodX;
|
|
periodY_array(run_index) = periodY;
|
|
|
|
% Capture the current figure (output of analyzeGSWavefunction_multipleruns)
|
|
frame = gcf; % Get current figure as a frame
|
|
|
|
if strcmp(save_option, 'video')
|
|
% Write the frame to the video file
|
|
writeVideo(videoObj, getframe(frame));
|
|
elseif strcmp(save_option, 'images')
|
|
% Save the figure as an image
|
|
image_filename = fullfile(output_folder_name, sprintf('wavefunction_run_%d.png', run_index-1));
|
|
saveas(frame, image_filename); % Save the image as a PNG file (adjust file type if needed)
|
|
end
|
|
|
|
% Optionally close the figure if you don't need it
|
|
close(gcf);
|
|
end
|
|
|
|
% Close the video writer if the user chose 'video'
|
|
if strcmp(save_option, 'video')
|
|
close(videoObj);
|
|
fprintf('Video saved as %s\n', output_video_name);
|
|
elseif strcmp(save_option, 'images')
|
|
fprintf('Images saved in folder %s\n', output_folder_name);
|
|
end
|
|
|
|
% Return the arrays
|
|
end |