Index exceeds the number of array elements (0). Error in ROI_timecourse_DICOM_v2_0 (line 20) FullFileName = FileName(1:suffix(1)-5);
조회 수: 2 (최근 30일)
이전 댓글 표시
Hello All,
Would really appreciate some help. I have a script that enables me to readin a series of DICOM images fromMRI scanner, select regions of interest and generate T2* signal intensity curves.
I keep getting this error.
>> ROI_timecourse_DICOM_v2_0
Have you saved ROIs to use in this subject? [y/n]: n
Would you like to redo any of the ROIs? [y/n]: n
Index exceeds the number of array elements (0).
Error in ROI_timecourse_DICOM_v2_0 (line 20)
FullFileName = FileName(1:suffix(1)-5);
The code is:
clear all
close all
%%***********************************************************************%%
%% READS IN A SERIES OF DICOM IMAGES %%
%% CREATES AND SAVES OR LOADS IN SAVED MASK ROIS %%
%% PLOTS TIME COURSES OF THE ROIS %%
%% Written by Wesolek (Roman Wesolowski) %%
%% contact me if you have problems modifying this script. %%
%%***********************************************************************%%
%% Name and path of outcoming and incoming files
%path='/Volumes/DOCS/DATA/studies/';
%cd(path)
ROIcheck=input('Have you saved ROIs to use in this subject? [y/n]: ','s');
ROIcorr=input('Would you like to redo any of the ROIs? [y/n]: ','s');
[FileName,PathName] = uigetfile({'*','*'},'Input the first DICOM functional image (exported from Osirix)');
im4D_info=dicominfo(strcat(PathName,FileName));
suffix=strfind(FileName,'.');
FileName = FileName(1:suffix(1)-5);
dyns=im4D_info.NumberOfTemporalPositions;
name_dir=dir(strcat(PathName,FileName,'*'));
name_dir=name_dir(1:dyns);
datefile=num2str(char({name_dir.name}));
im4D=zeros(im4D_info.Rows,im4D_info.Columns,im4D_info.Private_2001_1018,dyns);
h=waitbar(0,'Loading Files...');
for i=1:dyns
im4D_info_=dicominfo(strcat(PathName,name_dir(i).name));
im4D_info_.BitsAllocated=32;
im4D(:,:,:,i)=im4D_info_.RescaleSlope*dicomread(im4D_info_);
waitbar(i/dyns,h,strcat('Loading Files... ',num2str(round(i/dyns*100)),' %'));
% fprintf(1,'File Name: %s \n',name_dir(i).name); %prints out all the names of loaded files
end
close(h)
fprintf(1,'Total of %d functional files loaded \n',i);
colour_map='rkbmgrkbmgcy';
cd(PathName)
if ((ROIcheck=='n')||(ROIcorr=='y'))
[FileNameA,PathNameA] = uigetfile({'*','*'},'Input the first DICOM anatomical image (exported from Osirix)');
imAnat_info=dicominfo(strcat(PathNameA,FileNameA));
suffix=strfind(FileNameA,'.');
FileNameA=FileNameA(1:suffix(1)-5);
dyns=imAnat_info.NumberOfTemporalPositions;
if (dyns==1)
h=waitbar(0,'Loading Files...');
slc=imAnat_info.Private_2001_1018;
name_dir1=dir(strcat(PathNameA,FileNameA,'*'));
name_dir1=name_dir1(1:slc);
datefile=num2str(char({name_dir1.name}));
for i=1:slc
imAnat(:,:,i)=dicomread(strcat(PathNameA,name_dir1(i).name));
% fprintf(1,'File Name: %s \n',name_dir1(i).name);
waitbar(i/slc,h,strcat('Loading Files... ',num2str(round(i/slc*100)),' %'));
end
Can somebody help me correct this error please.
댓글 수: 0
답변 (1개)
Guillaume
2019년 11월 27일
Most likely, strfind(FileName, '.') didn't find a . so suffix is empty and of course suffix(1) is invalid since index 1 is more than the 0 elements in suffix (as the error message tells you).
댓글 수: 2
Guillaume
2019년 11월 27일
편집: Guillaume
2019년 11월 27일
Select a file that has a . in it when prompted by uigetfile?
Change your code so it doesn't look for a . ?
Change your code so it check if the file name has a . in it and react accordingly?
I can't tell you how to fix it since there's no comment explaining what the code is supposed to do.
참고 항목
카테고리
Help Center 및 File Exchange에서 Read, Write, and Modify Image에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!