Matlab:数组格式

时间:2015-07-07 10:33:26

标签: arrays matlab loops for-loop matrix

好的,我有两个变量 - 事件12x1,类型12x1。看起来像跟随;

Events =
   13.0850
   15.1860
   20.1470
   24.3080
   27.3030
   29.4180
   33.2930
   36.3710
   38.7080
   42.4300
   44.6670
   46.9640

type = 
    'control'
    'control'
    'control'
    'control'
    'control'
    'control'
    'control'
    'control'
    'control'
    'control'
    'control'
    'control'

我想将以下内容写入文件(.txt),该文件的标题为变量名称,其值位于其下方。或者我可以将单元格数组连接到数字双数组并写入文件吗?

1 个答案:

答案 0 :(得分:0)

至少在最近的MATLAB版本中,最简单的方法是将变量放在一个表中,然后写出表格。

>> myevents = [1;2;3]
myevents =
     1
     2
     3
>> mytypes = {'control';'control';'control'}
mytypes = 
    'control'
    'control'
    'control'
>> t = table(myevents, mytypes)
t = 
    myevents     mytypes 
    ________    _________
    1           'control'
    2           'control'
    3           'control'
>> writetable(t,'myfile.csv')
>> type('myfile.csv') % Display contents of the file just created

myevents,mytypes
1,control
2,control
3,control
R2013b中引入了

table。在该版本之前,最简单的方法是使用fprintf等低级函数直接编写文件。

修改:如果您的版本低于R2013b,则可以使用以下内容:

fid = fopen('myfile.csv','w');
for i = 1:numel(myevents)
    fprintf(fid, '%f,%s\n', myevents(i), mytypes{i});
end
fclose(fid);

>> type('myfile.csv')

myevents,mytypes
1.000000,control
2.000000,control
3.000000,control

使用格式说明符(例如%f%s)指定数字的输出格式。请参阅doc fprintf以查找详细信息。