M 兼容使用 fft 函数:TyMLang.InputArgumentError:参数数量过多,1个参数超过0个参数
技术分享
发布于 2025-07-10 10:37:10
查看 1过去327天
问题现象
M 兼容使用 fft 函数时不能正确调用到函数,出现报错如下:TyMLang.InputArgumentError:参数数量过多,1个参数超过0个参数。

解决方法
由于存在同名自定义函数 fft,导致在使用时调用到自定义函数,而非 M 兼容中的 fft 函数,因此导致报错,需要使用 which 命令找到对应的自定义函数,重命名后即可解决。
示例:
1.启动 M 命令行,输入以下命令并回车:
which fft
2.可以看到此时显示出自定义函数 fft 的路径:

3.将光标移动到路径上,ctrl 加单击打开自定义函数的路径:

4.找到 fft.m 文件,右键选择重命名:

5.重命名该函数,例如重命名为“my_fft”:

6.新建 m 文件,运行下面代码:
Fs = 1000; % Sampling frequency
T = 1/Fs; % Sampling period
L = 1500; % Length of signal
t = (0:L-1)*T;
S = 0.8 + 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
X = S + 2*randn(size(t));
Y = fft(X);
plot(Fs/L*(0:L-1),abs(Y),"LineWidth",3)
title("Complex Magnitude of fft Spectrum")
xlabel("f (Hz)")
ylabel("|fft(X)|")
7.可以看到此时成功调用了 M 兼容的 fft 函数:

所属专栏:Syslab基础平台
产品信息:M语言兼容工具