user2587726
user2587726

Reputation: 338

Matlab fopen, is it possible to have a numeric file name?

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

Upvotes: 0

Views: 1601

Answers (1)

Eleonora Ciceri
Eleonora Ciceri

Reputation: 1798

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).

Upvotes: 4

Related Questions