1

我发现“在 Matlab 中向矩阵添加标题”问题非常接近我需要做的。我希望将数据保留在单元格中,因为我的标题很大而且我多次运行它我不想使用文件 io,因为它会增加大量时间。

这就是我所拥有的...

  • header = ( '季度', '每月剩余金额', '每年剩余金额');

    数据 =

        1        30000    150000
    
        2        20000    130000
    

我似乎无法得到这个

out = 

  Quarter    monthly am    annual am
        1         30000       150000

        2         20000      130000

非常令人沮丧,我已经尝试过 num2str 和一堆其他东西……我要尝试 num2cell,然后制作一个大数组并填充它们……周五快乐,我要回家了 T_T

4

2 回答 2

6

如果您有权访问统计工具箱,则可以创建数据集数组

header = {'Quarter', 'monthly amount remaining', 'annual amountremaining'}
data =    [ 1        30000    150000;
    2        20000    130000];

ds = dataset({data,header{:}})

ds = 

    Quarter    monthlyAmountRemaining    annualAmountremaining
    1          30000                     1.5e+05              
    2          20000                     1.3e+05  

请注意,这会删除标题名称中的空格,但使用数据集,您可以使用这些名称方便地访问列,例如:

>> ds.Quarter

ans =

     1
     2

如果您只想写入 Excel(而不使用数据集方法),则可以创建一个单元格数组:

 [header;num2cell(data)]

ans = 

    'Quarter'    'monthly amount remaining'    'annual amountremaining'
    [      1]    [                   30000]    [                150000]
    [      2]    [                   20000]    [                130000]
于 2012-06-29T22:11:08.247 回答
0

据我所知,没有真正的内置支持。与Xurtio 提到的相关,您想要反向执行Matlab 在执行xlsread 时撤消的操作。他们的解决方案是为数字创建一个矩阵(具有固定大小,因此可以使用数组样式索引),并为具有可变大小的字符串创建一个元胞数组。

以下内容几乎来自 disp() Matlab 文档,它实现了效果,但不是以灵活的方式:

header='        Quarter  MonthlyAM   AnnualAM  ';
data=[1 30000 150000; 2 20000 130000];
disp(header);
disp(data);
    Quarter  MonthlyAM   AnnualAM  
       1       30000      150000
       2       20000      130000

如果您想获得更灵活的格式,您可以查看数据矩阵的 sprintf 中介。

于 2012-06-29T21:27:49.967 回答