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
相关产品推荐
相关产品推荐

