使用fplot绘制含sinc、复指数的函数时返回空白结果的问题求解
Matlab复函数调用fplot绘图空白问题解决
问题原因
- 你定义的目标函数是复值函数,Matlab的
fplot默认不支持直接绘制复值函数的时域变化曲线:较新版本Matlab中fplot(复函数)默认绘制的是「实部-虚部」的复平面轨迹,而非多数用户预期的实部/幅度随时间t变化的曲线;旧版本Matlab中fplot会直接丢弃虚部信息,如果实部的取值范围过小、或者自适应采样逻辑误判函数无有效变化,就会出现空白画布的情况。 - 你当前代码中的
0.5*sinc(n/2)是和自变量t无关的常数,复指数项的幅度恒为1,整个函数只有相位随t变化、幅度固定,进一步提升了fplot采样逻辑的误判概率。
修复方案
你可以根据自己的绘图需求,明确指定要绘制的函数分量即可:
绘制实部随t变化的曲线
n = 1; % 显式提取实部 x2t_real = @(t) real(0.5*sinc(n/2)* exp(1j*n*pi*0.5*t)); fplot(x2t_real);
绘制幅度随t变化的曲线
n = 1; % 显式计算幅度 x2t_abs = @(t) abs(0.5*sinc(n/2)* exp(1j*n*pi*0.5*t)); fplot(x2t_abs);
绘制复平面上的实部-虚部轨迹
n = 1; x2t = @(t) 0.5*sinc(n/2)* exp(1j*n*pi*0.5*t); % 显式指定t的取值范围,避免采样逻辑误判 fplot(x2t, [-10 10]); axis equal; % 保证轨迹显示为正圆形
内容的提问来源于stack exchange,提问作者Blame-it-on-me
相关产品推荐
相关产品推荐

