fopen() in R2008 does not use variables?

2 Ansichten (letzte 30 Tage)
Ed Seger
Ed Seger am 9 Okt. 2019
Beantwortet: Ed Seger am 14 Okt. 2019
I am trying to open a series of text files and I am getting the 'Invalid filename' error. This is the code:
[FName,PathName,FilterIndex] = uigetfile('C:\temp\matlab\data','MultiSelect','on');
% read in input file
% the input data is one col of floats in text
for f = 1:length(FName)
filename = strcat('C:\temp\matlab\data\', FName(f))
fid = fopen(filename,'rt');
data = fscanf(fid, '%f', 90000 );
fclose(fid);
....
This is what I get for filename:
filename =
'C:\temp\matlab\data\sample0.txt'
I did some debugging and I can open the files one by one if I put the string literal as the first argument to fopen().
Questions:
Does this function only take string literals in R2008?
If so, is there a workaround?
Using MATLAB Version 7.6.0.324 (R2008a)
Thanks,
Ed

Akzeptierte Antwort

Steven Lord
Steven Lord am 9 Okt. 2019
The FName output in your uigetfile call is a cell array. When you use parentheses to index into a cell array the result is also a cell array. Calling strcat on a cell array and a char array results in a cell array. fopen does not accept a cell array as its first input.
Instead use curly braces to extract the contents of the cell in FName, which will be a char array. Calling strcat on a char array and a char array results in a char array that fopen can accept.
sample = {'abc'; 'def'; 'ghi'}
xCell = sample(1)
xChar = sample{1}
yCell = strcat(xCell, '123')
yChar = strcat(xChar, '123')
whos

Weitere Antworten (2)

Roshan Chavan
Roshan Chavan am 9 Okt. 2019
Bearbeitet: Roshan Chavan am 10 Okt. 2019
FName(f) is a cell. Convert it to a character array by using char(Fname(f)).
[FName,PathName,FilterIndex] = uigetfile('C:\temp\matlab\data\','MultiSelect','on');
% read in input file
% the input data is one col of floats in text
for f = 1:length(FName)
fid = fopen(strcat(PathName,char(FName(f))),'rt');
data = fscanf(fid, '%f', 90000 );
fclose(fid);
....

Ed Seger
Ed Seger am 14 Okt. 2019
Thanks for the responses, these solved the problem. This focuses on a complaint that I have had about matlab documentation for years, they dont show the type of the arguments in the built-in functions in the help.
Ed

Kategorien

Mehr zu Data Type Conversion finden Sie in Help Center und File Exchange

Tags

Produkte


Version

R2008a

Community Treasure Hunt

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

Start Hunting!

Translated by