fopen() in R2008 does not use variables?

2 visualizzazioni (ultimi 30 giorni)
Ed Seger
Ed Seger il 9 Ott 2019
Risposto: Ed Seger il 14 Ott 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

Risposta accettata

Steven Lord
Steven Lord il 9 Ott 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

Più risposte (2)

Roshan Chavan
Roshan Chavan il 9 Ott 2019
Modificato: Roshan Chavan il 10 Ott 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 il 14 Ott 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

Categorie

Scopri di più su Data Type Conversion in Help Center e File Exchange

Tag

Prodotti


Release

R2008a

Community Treasure Hunt

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

Start Hunting!

Translated by