在MATLAB中使用3个向量和x,y向量在对数刻度上创建等高线图

时间:2013-11-28 19:52:26

标签: matlab vector contour logarithm

我有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会崩溃。

关于解决它的任何想法?

2 个答案:

答案 0 :(得分:0)

您可以使用meshgrid生成所需的网格并稍后替换标签。您正在寻找的属性称为XTick和XTickLabel。例如,请参阅:http://www.mathworks.com/matlabcentral/answers/92565

答案 1 :(得分:0)

您需要使用对数刻度以任何合理的方式查看结果。实际上,这意味着你应该做

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');

我现在无法测试,所以这可能是一个糟糕的建议。让我知道它对你有用。