Applying Function to Structure

조회 수: 2 (최근 30일)
itend
itend 2017년 8월 21일
댓글: itend 2017년 8월 22일
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 :)

채택된 답변

Walter Roberson
Walter Roberson 2017년 8월 21일
편집: Jan 2017년 8월 21일
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
Walter Roberson
Walter Roberson 2017년 8월 22일
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
itend
itend 2017년 8월 22일
Thank you so much for your help!!!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Animation에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by