Applying Function to Structure
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Currently, here is my code:
% Specify the folder where the files live.
myFolder = 'C:\Users\Irwin\Desktop\Matlab\Scintillator_project\advanced';
% Check to make sure that folder actually exists. Warn user if it doesn't.
if ~isdir(myFolder)
errorMessage = sprintf('Error: The following folder does not exist:\n%s',
myFolder);
uiwait(warndlg(errorMessage));
return;
end
% Get a list of all files in the folder with the desired file name pattern.
filePattern = fullfile(myFolder, '*.spe');
theFiles = dir(filePattern);
for k = 1 : length(theFiles)
baseFileName = theFiles(k).name;
fullFileName = fullfile(myFolder, baseFileName);
fprintf(1, 'Now reading %s\n', fullFileName);
end
I currently have a structure in which each entry contains a .spe file. I would like to apply the function readSPE https://www.mathworks.com/matlabcentral/fileexchange/35940-readspe to each entry in the structure to convert them from .spe format to a 3D array.
Please help!
Thanks :)
0 commentaires
Réponse acceptée
Walter Roberson
le 21 Août 2017
Modifié(e) : Jan
le 21 Août 2017
In terms of your existing code, you would just add a readSPE(fullFileName) after your fprintf().
If you want to use more compact code then
filePattern = fullfile(myFolder, '*.spe');
dinfo = dir(filePattern);
filenames = fullfile(myFolder, {dinfo.name});
output = arrayfun(@readSPE, filenames, 'uniform', 0);
6 commentaires
Walter Roberson
le 22 Août 2017
filt_order = 3;
% Get a list of all files in the folder with the desired file name pattern.
filePattern = fullfile(myFolder, '*.spe'); % Change to whatever pattern you need.
theFiles = dir(filePattern);
num_files = length(theFiles);
filt_results = cell(num_files, 1);
for k = 1 : num_files
baseFileName = theFiles(k).name;
fullFileName = fullfile(myFolder, baseFileName);
fprintf(1, 'Now reading %s\n', fullFileName);
this_spe = readSPE(fullFileName);
filt_result{k} = medfilt1(this_spe, filt_order, 3);
end
You cannot use imagesc or anything similar to create images from them. The result of median filtering is going to be 3 dimensional if the input is 3 dimensional. You need to decide how you want to create the images of the 3D arrays:
- as iso surfaces using isosurface()
- as slices, using slice()
- using the R2017a voxelViewer() app
- as animation
- as voxels, using some other routine
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Animation dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!