2014-12-15 4 views
0

Просто нужна помощь с некоторыми из моего кода matlab.Проблемы с последовательным файловым контуром Matlab

%import Sequential files 

clc % clear window 
clear %clear workspace 

numfiles=4; 

data=cell(1,numfiles); 

for k = 2:numfiles 
    myfilename=sprintf('J678501%d.mat',k); 
    data{k}=importdata(myfilename); 
end 

for a= 1:3 
    order_directory(a)=data(:,(a+1)); 
end 


**for n = 56:59 
    F=getfield((data{1,2}),sprintf('order_%d',n)); 
end** 

wavelength=F(:,1); 
intensity=F(:,2); 

Звёздочка, где мне нужна помощь.

Мои файлы указаны в заказе от order_56 до order_141 (я только что поставил 56:59 на данный момент), однако мне не хватает нескольких заказов (например, order_60 и order_100 - возможно, другие в других файлах .. это непротиворечиво). Как я могу заставить Matlab просто пропустить файл, если его нет, и перейти к следующему файлу?

Благодаря Caz

+0

Вы можете использовать 'dir' перечислить все файлы в определенном каталоге, а затем просто пройдёмся по всем из возможных имен в этом каталоге. Таким образом, вы не будете пытаться читать в файле, который не существует. Вы только что прочитали все файлы в каталоге. – rayryeng

+0

@rayryeng Как бы я это сделал? Я совершенно новый для matlab – CazV

+0

@CazV помог мне работать? Если это так, отметьте его как принятое, чтобы люди знали, что у вас нет этой проблемы, и они могут взглянуть на ваш новый. – David

ответ

0

Я не мог проверить это, но вы можете использовать exist, чтобы проверить, существует ли файл. Затем просто отслеживайте, какие из них существуют в векторе fileNumbers, и используйте это для перебора.

fileNumbers=[]; 
for k = 2:numfiles 
    myfilename=sprintf('J678501%d.mat',k); 
    if exist(myfilename) 
     fileNumbers=[fileNumbers k]; 
     data{k}=importdata(myfilename); 
    end 
end 

, а затем, когда вы используете данные

for n=fileNumbers 
    F=getfield((data{1,2}),sprintf('order_%d',n)); 
end 
+0

Это не сработало, но я думаю, что я попробовал что-то еще, что может быть лучше? – CazV

+0

Произошла ошибка или просто не работает должным образом? Я попробовал это на простом примере, и это, казалось, сработало. – David

+0

Линия getfield продолжает показывать ошибки. Я мог бы использовать ее для одного набора файлов, но не для другого. Поэтому почему я попытался изменить код, чтобы упростить его? – CazV

Смежные вопросы