簡體   English   中英

Matlab 在 x 軸上繪制特定點

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

沒有顯示零的 f(x) 圖

編輯:我希望我的身材看起來像這樣: 具有正確組件的 f(x) 圖

首先,強烈建議避免使用現有函數的名稱命名變量,因此將值向量稱為“zeros”不是一個好主意,最好將其稱為“my_func_zeros”或類似名稱。zeros是一個內置的 matlab function 用於創建零填充的向量/矩陣。

至於你的問題:

  1. 我相信你只是忘了指定想要的標記類型,所以默認情況下它是一個不會出現的無限小點。 此外,當使用 MATLAB 的基本顏色\標記之一時,無需指定選項名稱(在我將附加的代碼行中會更清楚)。
  2. 您可以使用 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 offfigure命令。

祝你好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM