Read characters from a txt file
显示 更早的评论
Hello everyone. I have a txt file in which the word 'HELLO' is written. I want Matlab to read this from the text and give me a matrix of the ASCII numbers of the letters. I found and executed the following code from a video.
fid = fopen('input1.txt');
matrix = fscanf(fid,'%f %c', [1,inf])
In the 2015 Matlab version, it gives me a matrix with 9 columns. In 2020 trial version I am using it gives the following error:
"Invalid file identifier. Use fopen to generate a valid file identifier." even though I used fopen.
Any help is appreciated.
5 个评论
dpb
2020-5-16
The working directory isn't the same between the two installations -- the input file isn't being found in R2020x.
Just because you call fopen doesn't mean it is always successful...check the return code and error message it returns--
Nazli Demir
2020-5-17
dpb
2020-5-17
'Pends on just what is in the file and the encoding used...for one thing also, your format string includes a '%f' for a floating point value which doesn't match the file content you described.
NB: '%c' returns any single character, including white space.
Probably what you really want is
matrix = fscanf(fid,'%s',1);
to return the word as char() string (which internally is an array of characters)
Again presuming the text is all that is in the file...
Nazli Demir
2020-5-17
double()
after you read the input data.(*)
If you're going to use formatted read, the i/o formatting libraries return the type of the variable expected in the format string--and a text value in a text file is interpreted as character data. The floating point (or decimal, too, for that matter) format string won't recognize anything other than a valid number as a number; that's its purpose and sole mission in life.
You can cheat and read the file as straight binary bytes by using fread, but that is also system-dependent in what created the file as far as encoding may be for unicode, etc., ...
(*) The other idiom you may see is
v=s+0;
where s is the char() string and v the numeric values...MATLAB will silently do the conversion with the arithmetic operation of char() to double().
回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Characters and Strings 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!