我已将以下.xlsx文件导入Matlab:
我的代码:
U_sum24t = zeros(height(Z_24TimeSteps),1);
col_names24tU = Z_24TimeSteps.Properties.VariableNames;
for k = 1:height(Z_24TimeSteps)
col_to_sum24tU = any(cell2mat(...
cellfun(@(x) strcmp(col_names24tU,x),Z_24TimeSteps.U{k},...
'UniformOutput', false).'),1);
U_sum24t(k) = sum(Z_24TimeSteps{k,col_to_sum24tU});
end
发生以下错误消息:
Undefined function 'sum' for input arguments of type 'cell'.
我想让Matlab对待所有' NaN'作为NaN,所以我可以执行计算。 我试过的:用空格替换Excel中的NaN,然后在Matlab中>导入数据> "用NaN替换空白" >不工作,仍然显示字符串格式
答案 0 :(得分:3)
基本上,您将数据提取到单元格数组中。我要做的是保持' NaN' Excel电子表格中的值并使用Matlab代码更改字符串' NaN'到数字NaN。然后,您可以使用cell2mat
将单元格数组转换为数字数组,以便执行sum
等数字操作。
为了更清楚,让我们分解您的具体错误:
Undefined function 'sum' for input arguments of type 'cell'.
错误消息与sum
有关,因此问题出在
U_sum24t(k) = sum(Z_24TimeSteps{k,col_to_sum24tU});
错误告诉我Z_24TimeSteps{k,col_to_sum24tU}
是一个单元格数组,所以让它成为一个临时变量:
mycellarray = Z_24TimeSteps{k,col_to_sum24tU};
现在我们有一个单元格数组,我们可以做以下操作来替换NaN'与NaN:
mycellarray{strcmp(mycellarray, 'NaN')} = NaN;
但我们仍然需要先将其转换为数字数组才能执行sum
:
U_sum24t(k) = sum(cell2mat(mycellarray));