Using 'OR' or 'ELSEIF' with a string

Hi, I have a basic question. I am reading a file named as Basefilename="Filenameversion1.production_time.improvement_date.time_frame.hdf".
The code is not reading files from a folder containing different versions i.e "Filenameversion2......hdf", "Filenameversion3......hdf".
Code only reads filename mentioned in Basefilename.The remaining filename is same only version name is changed.
How can i do modification so that matlab reads file even if 'version' is changed.
Thanks alot

답변 (2개)

Image Analyst
Image Analyst 2016년 1월 3일

0 개 추천

The answer for this, along with lots of other good stuff, is in the FAQ: http://matlab.wikia.com/wiki/FAQ#How_can_I_process_a_sequence_of_files.3F
Star Strider
Star Strider 2016년 1월 3일

0 개 추천

I am not certain that I understand what you want to do, but this may be one approach:
ver_nr = 2;
Basefilename=sprintf('Filenameversion%d.production_time.improvement_date.time_frame.hdf', ver_nr)
produces:
Basefilename = Filenameversion2.production_time.improvement_date.time_frame.hdf
Is that what you want to do?

댓글 수: 10

JB
JB 2016년 1월 3일
Yes,something similar. By this method i have to update ver_nr everytime,is there any way i dont need to change it..?
JB
JB 2016년 1월 3일
I have modified the basefilename as:
Basefilename =Filenameversion%d.production_time.improvement_date.%s.hdf
Using %d it does not scan for time frame(%s is scaning time) i,e processing is as: Filenameversion1.production_time.improvement_date
Star Strider
Star Strider 2016년 1월 3일
First, you can define ‘ver_nr’ as a loop index variable. If the numbers are discontinuous, you can define them as a specific vector, for example: for ver_nr = [1 2 5 8 10] as the start of the loop.
Second I do not understand what the ‘%s’ refers to or what you want to do with it. That was not part of your original post.
JB
JB 2016년 1월 3일
편집: JB 2016년 1월 3일
%s is scaning time_frame ,as time_frame is different for every file Basefilename="Filenameversion1.production_time.improvement_date.time_frame.hdf"
JB
JB 2016년 1월 3일
편집: JB 2016년 1월 3일
Is there a way to use 'or' or 'elseif' for e.g:
if Basefilename="Filenameversion1.production_time.improvement_date.time_frame.hdf"
else if
Basefilename="Filenameversion2.production_time.improvement_date.time_frame.hdf"
Star Strider
Star Strider 2016년 1월 3일
How do the scanning time_frame and version number relate?
I am now lost. I have no idea what you are doing or what you want to do.
Image Analyst
Image Analyst 2016년 1월 3일
No, you can either use numbers in the "if" test (like if num1==num2), or you can compare two strings with string functions like strcmp(str1, str2), strcmpi(), or strfind().
JB
JB 2016년 1월 3일
In simple words i want the following,
if Basefilename="Filenameversion1.production_time.improvement_date.time_frame.hdf"
else if
Basefilename="Filenameversion2.production_time.improvement_date.time_frame.hdf"
Sorry for inconvience.. my bad..
Star Strider
Star Strider 2016년 1월 3일
I still don’t understand, but if you want to do comparisons with string variables, use strcmpi, strncmpi, or related functions (links to those in and at the end of those pages).
Image Analyst
Image Analyst 2016년 1월 3일
편집: Image Analyst 2016년 1월 3일
A comparison would have == not =. So I don't know if you're wanting to do
if Basefilename == "Filenameversion1.production_time.improvement_date.time_frame.hdf"
% Some code to do if this is true.
elseif Basefilename == "Filenameversion2.production_time.improvement_date.time_frame.hdf"
% Some code to do if this is true.
end
Or if you're trying to do
if num1 == num2
% Assign Basefilename
Basefilename = "Filenameversion1.production_time.improvement_date.time_frame.hdf"
else
% Assign Basefilename
Basefilename = "Filenameversion2.production_time.improvement_date.time_frame.hdf"
end
Which is it? Or is it neither?

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

질문:

JB
2016년 1월 3일

편집:

2016년 1월 3일

Community Treasure Hunt

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

Start Hunting!

Translated by