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

MATLAB温度转换程序报错:contains函数输入参数不足求助

解决MATLAB温度转换程序的报错与代码修正

报错原因分析

你遇到的Not enough input arguments错误来自三个核心问题:

  1. contains函数用法错误:MATLAB的contains需要两个参数,格式为contains(待检查字符串, 匹配模式),你只传入了模式,漏掉了待检查的str参数。
  2. 模式定义错误:'C' || 'c'是逻辑或运算,结果是布尔值true,不是用来匹配的字符串模式,无法被contains识别。
  3. 条件判断逻辑错误:str == contains(...)完全不符合语法,contains直接返回布尔值,可直接作为if的判断条件。

另外代码还有两处逻辑问题:

  • 提取数字字符后未保存结果,直接对原字符串做减法操作会报错(字符串不能直接参与算术运算)。
  • 温度转换公式错误(C转F的正确公式是F = C × 9/5 + 32)。

修正后的完整代码

% 定义匹配模式:用包含大小写的字符数组
patternC = 'Cc';
patternF = 'Ff';

% 接收用户输入的字符串
str = input('Enter number and letter EX: 56F, 67C', 's');

% 判断是否为摄氏度转华氏度
if contains(str, patternC)
    % 提取字符串中的数字字符并转为数值
    digitChars = str(isstrprop(str, 'digit'));
    tempC = str2double(digitChars);
    % 执行温度转换
    tempF = tempC * 9/5 + 32;
    fprintf('%.2f°C 转换为华氏度是: %.2f°F\n', tempC, tempF);
% 判断是否为华氏度转摄氏度
elseif contains(str, patternF)
    digitChars = str(isstrprop(str, 'digit'));
    tempF = str2double(digitChars);
    tempC = (tempF - 32) * 5/9;
    fprintf('%.2f°F 转换为摄氏度是: %.2f°C\n', tempF, tempC);
else
    fprintf('输入格式错误,请输入类似 56F 或 67C 的格式\n');
end

给MATLAB新手的建议

  • 先查函数文档:遇到陌生函数,在命令行输入doc 函数名(比如doc contains)就能查看官方用法和示例,这是最靠谱的参考。
  • 区分字符串与数值类型:字符串是字符序列,不能直接做算术运算,必须用str2double等函数转为数值后再计算。
  • 模式匹配的简化写法:匹配大小写字母时,除了用'Cc',还可以用正则表达式'[Cc]',效果完全一致。
  • 测试边界情况:比如输入0C、32F这类特殊值,验证转换结果是否正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 22:07:28