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

Octave运行对数函数时出现*运算符参数不兼容错误求助

报错核心原因

你遇到的参数不匹配报错和对数功能本身无关,是两处语法使用错误导致:

  • 实际运行时time和value是从txt文件读取的38×1列向量,你使用的*是矩阵乘法运算符,要求左操作数的列数等于右操作数的行数,两个同维度列向量无法执行矩阵乘法,需要改用逐元素乘法运算符.*
  • fplot是用于绘制函数句柄的专用函数,不能直接传入数值数组,绘制数值序列需要用plot函数
    另外你的计算逻辑存在隐藏问题:对数输入项time*value*0.5*10*-0.17609计算结果为负数,log10处理负数会返回复数或直接报错,需要先修正符号逻辑。

具体修正方案

  1. 所有数组间的乘、除、幂运算都添加.前缀,使用逐元素运算符,*改.*、/改./
  2. 将绘图函数从fplot替换为plot
  3. 修正对数输入的符号,避免传入负数
  4. 优先使用已定义的L1、L2变量,避免硬编码数值出错

修正后可运行代码

% 变量声明
ti= 0.5;
q = 3;
L1 = 3/(log10(2)); % 9.9658 
L2 = log10(2/3); % -0.17609
% 以下两行替换为你从txt读取的实际time、value数据,此处为模拟38×1列向量的演示代码
time = linspace(1,60,38)';
value = linspace(1,200,38)';

% 对数函数计算与绘图
f2=figure(2);
% 此处添加负号修正对数输入为正,可根据实际业务逻辑调整符号规则
y2= L1.*log10(1./(time.*value.*0.5.*10.*(-L2)));
x2=time;
plot(x2,y2); 
xlabel('Time in s'), ylabel('Value in db'),title('Calculations'),set(gca,'fontsize',15); grid on 

如果业务逻辑确实要求对数输入为负数,可将对数部分修改为log10(complex(1./(...)))处理复数运算即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:36:04