using fscanf to sort x and y values into vectors

2 ビュー (過去 30 日間)
Caitlin Schmidt
Caitlin Schmidt 2019 年 7 月 23 日
コメント済み: Walter Roberson 2019 年 7 月 30 日
I have attached the data file I am referencing. I need to separated the x-values and the y-values into two separate vectors. This is what I have created:
function [x,y]= week8_4_1(filepath)
%This function will read from a data file and extract all x and y data
%values, and put them into vectors
[fid,msg]=fopen(filepath);
if fid==-1
disp(msg);
else
mat=fscanf(fid,'x %f y %f\n',[2,inf]);
x=mat(1,:);
y=mat(2,:);
status=fclose(fid);
if status~=0
disp('File could not be closed');
else
disp('File closed successfully');
end
end
end
I keep getting an error when I try to run the program saying:
Index in position 1 exceeds array bounds.
Error in week8_4_1 (line 11)
x=mat(1,:);
I'm not sure what is wrong with my code. Any help is appreciated!
  5 件のコメント
Caitlin Schmidt
Caitlin Schmidt 2019 年 7 月 24 日
I cannot attach it because it is a .dat file.
Walter Roberson
Walter Roberson 2019 年 7 月 24 日
See my response on your other question

サインインしてコメントする。

回答 (1 件)

Chidvi Modala
Chidvi Modala 2019 年 7 月 30 日
I see your mat file is empty that could be the reason behind this error. I assume that you are trying to read data from data file by excluding the characters ‘x’, ‘y’ and the data file has data in the below format
x2 y3
x4 y5
Try replacing mat=fscanf(fid,'x %f y %f\n',[2,inf]); with mat = fscanf(fid,[’x’ ‘%f’ ‘ y’ ‘%f\n’],[2 inf]);
You can refer to https://www.mathworks.com/help/matlab/ref/fscanf.html to see how to skip special characters in file using ‘fscanf’.
  1 件のコメント
Walter Roberson
Walter Roberson 2019 年 7 月 30 日
I do not see how that change can make any difference. Computing a character vector with [] of static parts that are all character vectors is the same as just hardcoding the complete vector, except hypothetically in cases of errors in the execution engine or JIT

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeEnvironment and Settings についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by