您说您想要txt 格式或mat 格式。我将提供这两种解决方案,其中一些归因于 Daniel 在您上面帖子中的评论中。
另存为文本文件
您可以使用fopen 打开文件进行写入。这会返回要写入的文件的 ID。在此之后,使用fprintf 并指定要写入的文件的 ID,以及要写入该文件的数据。因此,使用sprintf,生成您想要的文本文件名,然后使用fprintf 将数据写入您的文件。需要注意的是,在 MATLAB 中将矩阵写入fprintf 采用 column major 格式。如果您不希望以这种方式写入数据并希望以行为主,则需要在将其写入文件之前转置您的数据。我会根据你的需要在代码中提供这两种方法。
完成后,使用fclose 关闭文件,注意您已完成写入。因此,你会这样做:
for i=1:10
if i==1
data = DATA(1:data_size,:);
elseif i==10
data = DATA((i-1)*data_size+1:end,:);
else
data = DATA((i-1)*data_size+1: i*data_size,:);
end
filename = sprintf('A%d.txt', i); %// Generate file name
fid = fopen(filename, 'w'); % // Open file for writing
fwrite(fid, '%f ', data.'); %// Write to file - Transpose for row major!
%// fwrite(fid, '%f ', data); %// Write to file - Column major!
fclose(fid); %// Close file
end
请注意,我用空格分隔了数字,以便您可以打开文件并查看这些值是如何相应写入的。我还通过使用%f 来使用默认精度和格式。您可以通过查看fprintf 文档并根据您的需要自定义精度和前导零格式来解决此问题。
保存为 MAT 文件
这实际上是一种更简单的方法。您仍然可以使用sprintf 保存数据,然后使用save 命令将工作区变量保存到文件中。因此,您的循环将是这样的:
for i=1:10
if i==1
data = DATA(1:data_size,:);
elseif i==10
data = DATA((i-1)*data_size+1:end,:);
else
data = DATA((i-1)*data_size+1: i*data_size,:);
end
filename = sprintf('A%d.mat', i); %// Generate file name
save(filename, 'data');
end
请注意,您要保存的变量必须是字符串。这就是为什么您必须在 data 变量周围加上单引号,因为这是您要写入文件的变量。