簡體   English   中英

在MATLAB中使用對數刻度上的3個向量和x,y向量創建等高線圖

[英]Create a contour plot in MATLAB with 3 vectors and x, y vectors on a logarithmic scale

我有3個向量

x =[10^(-10) 10^(-9) 10^(-8) 10^(-7) 10^(-6) 10^(-5) 10^(-4) 10^(-3) 10^(-2)]

y =[10^(-10) 10^(-9) 10^(-8) 10^(-7) 10^(-6) 10^(-5) 10^(-4) 10^(-3) 10^(-2)]

z是誤差,取值范圍是5到0.01。

我需要創建一個輪廓圖。 但是,我不能使用meshgrid,因為在x和y軸上的步幅應該很小,並且在嘗試這樣做時Matlab會崩潰。

有解決的想法嗎?

您可以使用meshgrid生成所需的網格,並在以后替換標簽。 您要查找的屬性稱為XTick和XTickLabel。 參見例如: http : //www.mathworks.com/matlabcentral/answers/92565

您需要使用對數標度以任何明智的方式查看結果。 實際上,這意味着您可能應該做

x = logspace(-10, -2, 9);
y = logspace(-10, -2, 9);

logX = log(x);
logY = log(y);

[lxx lyy]=meshgrid(logX, logY);

然后像往常一樣繪制輪廓

contour(lxx, lyy, reshape(z, [9 9]));

最后,您需要注釋軸以顯示您正在使用對數刻度-或可以關閉刻度線標簽,並用自己的值替換它們。

另外,我想知道是否可以使用現有的網格

[xx yy] = meshgrid(x, y);

在繪制輪廓后,

set(gca, 'xscale', 'log');
set(gca, 'yscale', 'log');

我目前無法測試,因此這可能是個壞建議。 讓我知道它如何為您服務。

暫無
暫無

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

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