Octave运行对数函数时出现*运算符参数不兼容错误求助
报错核心原因
你遇到的参数不匹配报错和对数功能本身无关,是两处语法使用错误导致:
- 实际运行时
time和value是从txt文件读取的38×1列向量,你使用的*是矩阵乘法运算符,要求左操作数的列数等于右操作数的行数,两个同维度列向量无法执行矩阵乘法,需要改用逐元素乘法运算符.* fplot是用于绘制函数句柄的专用函数,不能直接传入数值数组,绘制数值序列需要用plot函数
另外你的计算逻辑存在隐藏问题:对数输入项time*value*0.5*10*-0.17609计算结果为负数,log10处理负数会返回复数或直接报错,需要先修正符号逻辑。
具体修正方案
- 所有数组间的乘、除、幂运算都添加
.前缀,使用逐元素运算符,*改.*、/改./ - 将绘图函数从
fplot替换为plot - 修正对数输入的符号,避免传入负数
- 优先使用已定义的
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
相关产品推荐
相关产品推荐

