问题
I have the following code:
ptol = [2, 4, 8, ...];
a = ptol(1)
fid = fopen( a,'r');
I need to open a file determined by which number is called from ptol, i.e. if ptol(1) = 2, then fopen should open file 2.
Currently I get the error "invalid filename". How do I fix this?
The following code is what I need to use to "load" the data in the files I'm struggling to open in to a matrix.
fileName = strcat(num2str(a),'.ext');
file = fopen(fileName,'r');
count = 1;
lines2skip = 4;
mat = zeros(29,872);
while ~feof(file)
if count <= lines2skip
count = count+1;
[~] = fgets(file); % throw away unwanted line
continue;
else
line = strtrim(fgets(file));
mat = [mat ;cell2mat(textscan(line, '%f')).'];
count = count +1;
end
end
回答1:
a is a number, I guess.
Thus, you need to specify a string which corresponds to the file name.
Does the file have any extension? num2str and strcat should do the magic.
The code:
fileName = strcat(num2str(a),'.ext');
fid = fopen(fileName,'r');
Notice that .ext has to be replace with the actual extension. If you are using .txt files, then replace with .txt.
Also, check for the position of the file (you need to specify the exact path).
来源:https://stackoverflow.com/questions/17837378/matlab-fopen-is-it-possible-to-have-a-numeric-file-name