SOM 2.1工具箱遇到了NaN问题。 下面的代码仅适用于单元格数组,而不适用于双精度数字数组。
[D, headers] = xlsread('Workbook2.xlsx', 'Sheet1', 'A2:BE101');
idx = isnan(D);
D(idx) = {[]}
The following error occurred converting from cell to double:
Error using double
Conversion to double from cell is not possible.
有什么建议吗?
答案 0 :(得分:1)
首先,你不能这样做:D(idx) = {[]}
如果你有一个双数组。
然后,isnan
不适用于单元格数组。考虑以下单元格:
a = cell(2,2);
a{1,1} = NaN;
a{1,2} = 2;
a{2,1} = NaN;
a{2,2} = 'hi';
你可以使用isnan
元素(在单元格的每个元素上),例如:
isnan(a{1,1})
=
1
或当单元格的所有元素都是同一类型时,您可以先使用cell2mat
函数进行转换,然后立即使用isnan
检查所有元素,例如:
a = cell(2,2);
a{1,1} = NaN;
a{1,2} = 2;
a{2,1} = NaN;
a{2,2} = 3;
c=cell2mat(a)
c =
NaN 2
NaN 3
isnan(c)
ans =
1 0
1 0
所以答案取决于你拥有的xls sheet
以及数据的类型。您可以使用上述选项之一。
如果您使用双数组的示例:
>> D = rand(2,3);
>> D(2,2) = NaN
D =
0.8147 0.1270 0.6324
0.9058 NaN 0.0975
>> idx = isnan(D)
idx =
0 0 0
0 1 0
>> D(idx) = []
D =
Columns 1 through 3
0.8147 0.9058 0.1270
Columns 4 through 5
0.6324 0.0975
当然,它将矩阵的结构分解为一个向量。