可写的在Matlab中用空格替换NaN

Joh*_*ews 1 excel matlab matlab-table

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

我使用以下功能:

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

writetable(T, filename)
Run Code Online (Sandbox Code Playgroud)

我不想用零替换它.我想要输出文件:

  1. 对NaN和.有空白
  2. 变量名称包含在输出中.

Sar*_*ama 5

你只需要xlswrite那个.它NaN用空白替换s.使用table2cell或组合table2arraynum2cell你的表转换到一个单元阵列.使用VariableNames表的属性检索变量名称并使用单元格数组填充它们.

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

示例运行:

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  
Run Code Online (Sandbox Code Playgroud)

收益率:

产量


虽然上面的解决方案在我看来比较简单,但如果你真的想使用writetable那么:

tmp = table2cell(T);             %Converting the table to a cell array
tmp(isnan(T.Variables)) = {[]};  %Replacing the NaN entries with []
T = array2table(tmp,'VariableNames',T.Properties.VariableNames); %Converting back to table
writetable(T,'output.csv');      %Writing to a csv file
Run Code Online (Sandbox Code Playgroud)