You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MATLAB如何移除元胞数组中的测量单位提取温度列纯数值

问题原因

str2double 直接调用返回NaN,是因为temp列的字符串包含空格、华氏度符号°、单位字符F,并非纯数字格式,函数无法识别非数字类字符就会返回空值。

实现方法

给两种可直接运行的方案,按需选择即可:

  • 正则提取法(适配格式波动场景)
    直接提取字符串里的数字片段,不用关心后缀单位具体是什么,只要数字在前就能抓出来,兼容整数、小数温度值:
    % 取出temp列的字符串内容
    tempCol = cArray.temp;
    % 正则匹配数字(支持小数的匹配规则:整数部分+可选小数点+可选小数部分)
    matchedNum = regexp(tempCol, '\d+\.?\d*', 'match', 'once');
    % 转成数值后写回原数组
    cArray.temp = str2double(matchedNum);
    
  • 固定字符替换法(适合单位格式100%固定的场景)
    不需要写正则,直接把已知的无关字符全部删掉再转数值,逻辑更直白:
    % 先转成string类型方便批量替换
    tempCol = string(cArray.temp);
    % 批量删除空格、°、F三类无关字符
    tempCol = replace(tempCol, [" ", "°", "F"], "");
    % 转成double数值写回原数组
    cArray.temp = double(tempCol);
    
注意事项
  • 如果你的温度值存在负数(比如低于0°F的场景),把正则匹配规则改成-?\d+\.?\d*就能兼容负号识别。
  • 转换完成后可以执行cArray(1:5,:)查看前5行数据,确认temp列已经是纯数值、没有残留单位字符即可。

内容的提问来源于stack exchange,提问作者Brian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 17:21:10