Storing elments of marix from text file into variables
1 view (last 30 days)
Show older comments
Mohammad Zaved Siddiqui
on 21 Sep 2015
Commented: Mohammad Zaved Siddiqui
on 25 Sep 2015
I'm having one text file containing a matrix in which the first column is a variable lets say x ,first row is a variable lets say y and all the elements inside except x and y are z.How do I read this text file and store them in separate variables .I tried using this but it didn't work.I think I've not stored the elements in z correctly if yes what should I do to correct it?
input = load('matrix.txt');
x= input(:,1)./100; y= input(1,:); z =input(:,:);
end
2 Comments
Accepted Answer
Jan
on 21 Sep 2015
Edited: Jan
on 21 Sep 2015
This is a bad method to store data, because Matlab must guess the size of the data.
fid = fopen(FileName, 'r');
if fid==-1, error(Cannot open file: %s', FileName); end
FirstLine = fgets(fid);
y = sscanf(FirstLine, '%f');
n = length(y);
M = fscanf(fid, '%f', [n+1, Inf]);
fclose(fid);
x = M(:, 1);
Data = M(:, 2:n+1);
Perhaps you need some transpose operators to get the wanted orientations.
3 Comments
Jan
on 22 Sep 2015
If you post the error messages, finding an improvement is easier. I cannot run Matlab during the daytime, so it is possible that the code contains a bug. But you can either fix it by you own or help me finding it. At least this code should contain enough ideas to allow you to solve the problem.
More Answers (1)
Thorsten
on 21 Sep 2015
Based on Jan's solution, I wrote the following function that does the job:
function [x y data] = readxydata(filename)
fid = fopen(filename, 'r');
if fid == -1, error('Cannot open file: %s', filename); end
y = sscanf(fgets(fid), '%f');
data = fscanf(fid, '%f', [numel(y)+1, Inf])';
st = fclose(fid);
if st ~= 0, error('Cannot close file: %s', filename); end
x = data(:, 1);
data = data(:, 2:end);
See Also
Categories
Find more on Data Import and Export in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!