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

Matlab如何在x轴绘制函数零点标记及解决显示异常问题

问题原因及解决方法

1. 零点标记不显示的原因

你调用plot函数时没有指定标记样式,Matlab的plot默认行为是绘制连续连线而非离散点。你传入的所有y值均为0,最终绘制出的是和红色x轴完全重合的绿色水平线,因此看不到零点标记。
只需在plot的参数中添加标记样式(比如'o'代表圆形标记、'.'代表圆点标记),同时搭配'LineStyle','none'取消点之间多余的连线即可显示标记。

2. 避免硬编码全0y数组的方法

调用Matlab内置的zeros()函数,传入零点数组的尺寸参数size(零点数组变量名),即可自动生成和零点数量完全匹配的全0y值数组,无需手动编写固定长度的[0 0 0 0],不管findmanyzeros返回多少个零点都能自动适配。

注意:建议不要使用zeros作为自定义变量名,避免和Matlab内置的zeros()函数命名冲突,导致后续调用内置函数时报错。

修正后的完整代码

% 求取f(x)的零点
f = @(x)sin(x)-exp(-x);
f_zeros = findmanyzeros(f, 0, 10, 50, 1e-10);

% 绘制f(x)曲线
fplot(f, [0 10], 'linewidth', 2, 'color', 'b');
hold on

% 绘制x轴参考线
yline(0, 'linewidth', 2, 'color', 'r');

% 绘制零点标记
plot(f_zeros, zeros(size(f_zeros)), 'go', 'LineStyle','none', 'MarkerSize',12, 'MarkerFaceColor','g');
hold off

grid on
ylim([-1.5 1])

上述代码中零点标记的样式可根据需求调整:将'go'替换为'g.'可显示更小的绿色圆点,修改MarkerSize参数可调整标记大小。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:45:03