What's wrong with textscan syntax?
조회 수: 14 (최근 30일)
이전 댓글 표시
I am converting some OCTAVE code to MATLAB and am running into what I assume is a sytnax error with the textscan function:
fid = fopen(FileName);
RawData = textscan(fid,'%q,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f'...
'%f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f','Headerline',1,'Delimiter',',');
fclose(fid);
ERROR:
Invalid expression. Check for missing multiplication operator, missing or unbalanced delimiters, or other
syntax error. To construct matrices, use brackets instead of parentheses.
I have tried adding a comma before the continued string on the third line:
,'%f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f','Headerline',1,'Delimiter',',');
ERROR:
Error using textscan
Name-value pair arguments must come in pairs.
Which to me means the comma should not be there, as it is picking that up as the start of a name-value pair.
I have looked up examples, but cannot find why I am getting an error.
댓글 수: 0
채택된 답변
Star Strider
2019년 4월 26일
Try an alternate format descriptor:
fd = ['%q' repmat('%f', 1, 28)];
RawData = textscan(fid, fd, 'HeaderLines',1, 'Delimiter',',');
I believe I counted correctly. It would be best to check that.
댓글 수: 3
Stephen23
2023년 9월 6일
편집: Stephen23
2023년 9월 6일
"Also the main problem was that I had used the name HeaderLine rather than HeaderLines."
Actually the cause of the error you show in your question is a missing comma.
Just as the error message states, this missing comma is invalid syntax:
RawData = textscan(fid,'%q,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f'...
% you missed a comma here ^^
After fixing that you would then find that it is not valid to supply the format string as two separate input arguments, i.e. character vectors over multiple lines need to be explicitly concatenated together using square brackets:
RawData = textscan(fid,['%q,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f',...
'%f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f'],'Headerline',1,'Delimiter',',');
That is what Star Strider avoided by using REPMAT and supplying the format text as one argument.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Characters and Strings에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!