[英]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.