[英]Matlab plotting specific points on x-axis
我想要 plot 和 function,标记为 f(x)=0。 我有一个 function findmanyzeros
,它返回一个 x 值数组,其中 f(x)=0 在一个范围内。 例如:
findmanyzeros(@(x)sin(x)-exp(-x), 0, 10, 50, 1e-10);
ans = [0.5885 3.0964 6.2850 9.4247]
我正在尝试 plot f(x) 的图形和位于 x 轴上的 f(x) 的零点,但是当我运行下面的代码时,结果图不显示零点。 如何沿 x 轴正确显示 f(x) 的零点? 另外,我该怎么做才能不硬编码值的数量 ( [ 0 0 0 0]
)?
% Find zeros of f(x)
f = @(x)sin(x)-exp(-x);
zeros = findmanyzeros(f, 0, 10, 50, 1e-10);
% Plot f(x)
fplot(f, [0 10], 'linewidth', 2, 'color', 'b');
hold on
% Plot the x-axis
yline(0, 'linewidth', 2, 'color', 'r');
hold on
% Plot the zeros of f(x)
plot(zeros, [0 0 0 0], 'color', 'g', 'MarkerSize',20);
hold off
grid on
ylim([-1.5 1])
首先,强烈建议避免使用现有函数的名称命名变量,因此将值向量称为“zeros”不是一个好主意,最好将其称为“my_func_zeros”或类似名称。zeros是一个内置的 matlab function 用于创建零填充的向量/矩阵。
至于你的问题:
因此,您的代码应该看起来像这样:
my_func_zeros = findmanyzeros(f, 0, 10, 50, 1e-10);
...
plot(my_func_zeros, zeros(1,length(my_func_zeros)), '*g', 'MarkerSize',20);
在哪里:
零(1,长度(my_func_zeros))
创建一个包含 my_func_zeros 向量大小的零的向量,并且:
'*G'
指定标记类型 (*) 和颜色 (g)。
顺便说一句,没有必要在每 plot 之后添加hold on
- 在你写完之后,你 plot 将被绘制在同一个图形上,直到下一个hold off
或figure
命令。
祝你好运!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.