如何让 Matlab 知道 'NaN' 应该被视为 NaN?
How to let Matlab know 'NaN' should be treated as NaN?
我已经将以下 .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 > 导入数据 > "replace blanks with NaN" > 不工作并且仍然显示字符串格式
本质上,您是将数据提取到元胞数组中。我要做的是将 '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));
我已经将以下 .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 > 导入数据 > "replace blanks with NaN" > 不工作并且仍然显示字符串格式
本质上,您是将数据提取到元胞数组中。我要做的是将 '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));