Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel Matlab中用空格替换NaN的可写性_Excel_Matlab_Matlab Table - Fatal编程技术网

Excel Matlab中用空格替换NaN的可写性

Excel Matlab中用空格替换NaN的可写性,excel,matlab,matlab-table,Excel,Matlab,Matlab Table,给定一个包含许多NaN的Matlab表格,如何将该表格编写为excel或csv文件,其中NaN被空格替换 我使用以下功能: T = table(NaN(5,2),'VariableNames',{'A','C'}) writetable(T, filename) 我不想将其替换为零。我希望输出文件: 为NaN和 变量名包含在输出中 你只需要这样。它将NaNs本身替换为空格。首先使用或结合使用和将表转换为单元格数组。使用表的VariableNames属性检索变量名,并用单元格数组填充它们 da

给定一个包含许多
NaN
的Matlab表格,如何将该表格编写为excel或csv文件,其中NaN被空格替换

我使用以下功能:

T = table(NaN(5,2),'VariableNames',{'A','C'})

writetable(T, filename)
我不想将其替换为零。我希望输出文件:

  • 为NaN和
  • 变量名包含在输出中
  • 你只需要这样。它将
    NaN
    s本身替换为空格。首先使用或结合使用和将表转换为单元格数组。使用表的
    VariableNames
    属性检索变量名,并用单元格数组填充它们

    data= [T.Properties.VariableNames; table2cell(T)];
    %or data= [T.Properties.VariableNames; num2cell(table2array(T))];
    xlswrite('output',data);
    

    以下项目的运行示例:

    T = table([1;2;3],[NaN; 410; 6],[31; NaN; 27],'VariableNames',{'One' 'Two' 'Three'})
    
    T =
    
      3×3 table
    
        One    Two    Three
        ___    ___    _____
    
        1      NaN     31  
        2      410    NaN  
        3        6     27  
    
    收益率:


    虽然我认为上述解决方案更简单,但如果您真的想使用:


    老实说,我认为以您描述的格式输出数据最直接的方法是使用as。但是,如果您真的想使用,我能想到的唯一选项是将表中的每个值封装在a中,并用空单元格替换
    nan
    条目。从带有随机数据和nan值的样本表开始:

    T = table(rand(5,1), [nan; rand(3,1); nan], 'VariableNames', {'A', 'C'});
    
    T = 
                A                    C        
        _________________    _________________
    
        0.337719409821377                  NaN
        0.900053846417662    0.389738836961253
        0.369246781120215    0.241691285913833
        0.111202755293787    0.403912145588115
        0.780252068321138                  NaN
    
    以下是进行转换的一般方法:

    for name = T.Properties.VariableNames  % Loop over variable names
      temp = num2cell(T.(name{1}));        % Convert numeric array to cell array
      temp(cellfun(@isnan, temp)) = {[]};  % Set cells with NaN to empty
      T.(name{1}) = temp;                  % Place back into table
    end
    
    下面是表
    T
    的最终结果:

    T = 
                 A                      C         
        ___________________    ___________________
    
        [0.337719409821377]    []                 
        [0.900053846417662]    [0.389738836961253]
        [0.369246781120215]    [0.241691285913833]
        [0.111202755293787]    [0.403912145588115]
        [0.780252068321138]    []
    
    现在,您可以使用
    writetable
    将其输出到一个文件中:

    writetable(T, 'sample.csv');
    

    如果excel中有NAN,文件会变大吗?奇怪,可能是这里的样子。看起来你可以把它转换成矩阵,或者做一个循环。实际上,我也曾想过类似的方法,直到我意识到
    xlswrite
    本身就是这样做的。你介意我在回答中包括这一点吗?虽然我避免了使用loop和
    cellfun
    ,但我不确定它是否会更好/faster@SardarUsama:如果您有解决方案的另一个变体,我会继续添加它。我不介意。:)
    writetable(T, 'sample.csv');