如何从matlab将不同长度和不同数据类型的数据写入文本文件

如何从matlab将不同长度和不同数据类型的数据写入文本文件,matlab,Matlab,现在我只能将固定长度的数据写入文本文件,但我需要更改为可变长度的数据。 我的代码: 您可以使用%f而不是%d,并指定宽度和精度,例如,宽度3和精度5将是%3.5f 有关说明符语法的更多信息,请参见matlab文档中的 编辑:如果您的意思是不知道“我的格式字符串最终会有多少个%d”,您可以先手动构造格式字符串(例如,通过连接或使用sprintf),然后在fprintf中使用生成的字符串,例如 N = 5; % number of data, subject to change on eac

现在我只能将固定长度的数据写入文本文件,但我需要更改为可变长度的数据。 我的代码:


您可以使用
%f
而不是
%d
,并指定宽度和精度,例如,宽度3和精度5将是
%3.5f

有关说明符语法的更多信息,请参见matlab文档中的


编辑:如果您的意思是不知道“我的格式字符串最终会有多少个
%d
”,您可以先手动构造格式字符串(例如,通过连接或使用
sprintf
),然后在
fprintf
中使用生成的字符串,例如

   N = 5; % number of data, subject to change on each run.

% construct format-string
  s = '%s';
  for i = 1:N-1; s = [s, '%d, ']; end
  s = [s, '%d\n']; % final data point

% use it with fprintf to print your data 
  fprintf (s, 'The data is: ', data{1,:});
根据中的答案,您可以使用
eval
和字符数组的组合来生成所需的格式规范以及要打印到文件中的数据条目

clear
clc

fid = fopen('file.txt','at+');

% Generate some random data in a cell
data = {rand(5,1) rand(3,1)};

% Calculate required dimensions for fprintf
% and store the results in file.txt
n = size(data,2);
m = [];
for i=1:n
    m = [m size(data{i},1) - 1];
end
% Finally, we will have n = 2, m = [4 2]

% Produce the final dynamic code snippet
fmt = [];
for i=1:n
    for j=1:m(i)
        fmt = [fmt '%d,'];
    end
    fmt = [fmt '%d\n'];
    eval(['fprintf(fid,fmt,data{' num2str(i) '});']);
    fmt = [];
end
file.txt
借用的输出示例如下:

9.063082e-01,8.796537e-01,8.177606e-01,2.607280e-01,5.943563e-01
2.251259e-02,4.252593e-01,3.127189e-01

data
看起来怎么样,你能举个例子吗?可能的重复或可能的重复
9.063082e-01,8.796537e-01,8.177606e-01,2.607280e-01,5.943563e-01
2.251259e-02,4.252593e-01,3.127189e-01