How can I save a series of variables in workspace to a txt file?

3 views (last 30 days)
Hi all,
I want to save a bunch of variables (data1, data2 etc) to a textfile (alldata.txt). The code below is a simplified version but it makes the problem clear, since the saved data in the textfile is not correct.
data1 = 1
data2 = 2
data7 = 3
data10 = 5
for i = 1:10
try
fid = fopen('alldata.txt','w');
x = (sprintf('data%d', i));
fprintf(fid,'%d\n',x);
fclose(fid);
catch
continue;
end
end
Tthis is the output in alldata.txt, which is wrong:
100
97
116
97
49
48
Is there anybody who can help me?
ps. I dont want to make use of the option: save() with the -ascii flag, because I want to be able to do some text formatting.

Accepted Answer

Walter Roberson
Walter Roberson on 3 Oct 2013

More Answers (1)

dpb
dpb on 3 Oct 2013
data1 = 1;
data2 = 2;
data7 = 3;
data10 = 5;
Don't do this; as you've discovered "there be dragons". Use
data=zeros(10,1); % set size as needed...
data(1)=1;
data(2) = 2;
data(7) = 3;
data(10) = 5;
instead. Then write the array members desired.
Or, of course, if there are a large number of missing indices, you can use named fields in a structure to provide specific ones instead of a full array.
Matlab works best if you don't try to create such named variables as you show initially--falling into the (common; don't think you're the only/first with the above idea) trap above is counterproductive in almost every case.
  1 Comment
Marty Dutch
Marty Dutch on 4 Oct 2013
It works now. The code below does what I need it to do! Import data stored in txt files, then calculate the mean, and put these in one matrix.
clear all
clc
fileDirectory = '/dir'; %directory containing .txt files
files = dir(fullfile(fileDirectory,'*.txt'));
disp(numel(files)); %display filenames
for i = 1 : numel(files)
fileNameIn = files(i).name;
data = load (fileNameIn);
disp(fileNameIn);
t(i, 1:1) = mean(data);
end;

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!