我使用xlsread
来读取xlsx文件。我希望rawdata
将返回一个34x3的单元格数组。
[raw_num raw_txt rawdata]=xlsread('file.xlsx');
raw_num
和raw_txt
返回正确的值,34x1单元格数组和34x2单元格数组。
但是,当我检查rawdata
时,它返回139x6单元格数组。它不仅包含excel文件中的数据,还包含NaN
元素。对于NaN
元素,excel文件中没有数据。我只能假设我可能先输入一些内容然后将其删除。但为什么matlab会读它?
rawdata看起来像这样:
'一个' ' B' ' C' NaN NaN
' d' ' E' ' F' NaN NaN
NaN NaN NaN NaN NaN
使用xlsread时如何避免这种情况?
或者我得到这个矩阵后如何删除NaN?
感谢您的帮助
答案 0 :(得分:0)
您可以删除NaN,如下所示:
k = {'a' 'b' 'c' NaN NaN}
k(cellfun(@isnan, k)) = [] ;
答案 1 :(得分:0)
如果=QUERY('Form Responses 1'!A:D,"select A,B,C,D WHERE B = date '"&text(today()-1,"yyyy-mm-dd")&"' ORDER BY B",1)
元素仅位于矩阵的边缘,如示例所示,则可以先删除所有NaN
的行,然后删除所有NaN
的列。< / p>
NaN
您必须这样做是因为% test data
A = {NaN, NaN, NaN, NaN; NaN, NaN, NaN, NaN; NaN, NaN, NaN, NaN};
A{1, 1} = 'a';
A{1, 2} = 'b';
A{2, 1} = 'c';
A{2, 2} = 'd';
fh = @(x) all(isnan(x));
% remove rows with all NaN
A(all(cellfun(fh, A),2),:) = [];
% remove columns with all NaN
A(:,all(cellfun(fh, A),1)) = [];
不保留维度,因此您必须分别在每个维度上运行维度。或者,您可以编写for循环。