当我在Matlab中读入时,如何将NA插入到空表的每个值中?

时间:2017-11-24 15:08:32

标签: matlab

我有一个像这样的循环,它试图将所有excel文件组合在一起。但我的一些表是空的,只有标题但没有值。我想在这些空表中插入NA,以便在最终的摘要文件中正确组合它们。我该怎么做?

DataCC = dir('*-CC.xls');
namelist1={DataCC.name};
PlateNameCC=regexprep(namelist1,'-CC.xls','');
MeanAreaCC=[];
MeanGreyCC=[];
ColonyNumCC=[];
for w = 1: numel(DataCC)
    basefilenamedata=DataCC(w).name;
    T=readtable(basefilenamedata);
    if T.Area=[]
        MeanAreaCC =NA;
        MeanGreyCC=NA;
        MeanGreyCC=NA;
        ColonyNumCC=NA;
    else
        MeanAreaCC = [MeanAreaCC mean(T.Area)];
        MeanGreyCC = [MeanGreyCC mean(T.MeanGrey)];
        ColonyNumCC = [ColonyNumCC max(T.ColonyNum)];
    end
end

空的excel文件如下所示:

React-Bootstrap Getting Started page

1 个答案:

答案 0 :(得分:0)

我解决了两个方面:

  1. 编辑代码:
  2. 替换下面的代码部分:

    if isempty(T.alpha)
         MeanAreaCC =NaN;
         MeanGreyCC=NaN;
         MeanGreyCC=NaN;
         ColonyNumCC=NaN;
    

    这是一个简单的错误,=[]是一项任务,而非比较。比较==对结构不利。请注意,它也是NaN,而不是NA

    1. 使用其他代码:
    2. 我实际上使用了Matlab导入数据/并生成脚本来执行此操作。

      %%Import the data
      [~, ~, raw] = xlsread('E:\Matlabfiles\GaN_ZnO\Abs_test\test.xlsx','Sheet1','A2:C20');
      raw(cellfun(@(x) ~isempty(x) && isnumeric(x) && isnan(x),raw)) = {''};
      
      %%Replace non-numeric cells with NaN
      R = cellfun(@(x) ~isnumeric(x) && ~islogical(x),raw); % Find non-numeric cells
      raw(R) = {NaN}; % Replace non-numeric cells
      
      %edit data
      data = reshape([raw{:}],size(raw));
      %% Create table
      test = table;
      
      %% Allocate imported array to column variable names
      test.alpha = data(:,1);
      test.beta = data(:,2);
      test.gama = data(:,3);
      
      %%Clear temporary variables
      clearvars raw R;
      

      但是,要在不在数字之间且没有额外值的单元格中创建NaN,您需要在'E:\myfiles\test.xlsx','Sheet1','A2:C20'

      部分上手动展开它

      在这种情况下,我有第二行之后的数据,超过三行。正如我在下面所示。 以防万一,test是表格,data是数字矩阵。然而,图片的名称错误。

      enter image description here