Matlab xlsread:强制将空单元格读取为NaN

时间:2015-02-26 14:02:40

标签: matlab io xlsread

我需要将Excel表格中的方形区域(10 x 10个单元格)中的数据导入Matlab。

区域中的所有数据都是数字,但该区域的某些外部行和列是空的。

在Matlab中,我仍然希望在Excel中有空单元格的地方(也在外部行和列中)有一个10乘10的双精度矩阵和NaN。

如果我使用xlsread,那么空的外部行和列会自动截断。

不用说,所有这些都应该自动完成,而不知道有多少空外行和列。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

假设您的10 x 10电子表格的第一行和第一列以及最后一行和一列是空的(如this)。使用:

[num,txt,raw] = xlsread('myfile.xlsx',1,'A1:J10'); % Read input.

将返回:

num   8x8 double
txt   0x0 cell
raw   10x10 cell

num中,非标量前导行和列会自动截断,而在txt中,任何数值都会被省略。但是,raw包含所有信息,因此可用于提取数值:

raw(cellfun(@ischar,raw)) = {NaN}; % Set non-scalar values to missing.
A = cell2mat(raw); % Convert to matrix.