matlab对数坐标的使用
·
画图时有时不想使用自然坐标(线性刻度),而需要使用对数坐标,此处给出几种方法:
然后在“编辑edit”下的“坐标轴属性”可以修改
1使用ezplot画图时,坐标用对数坐标。
ezplot默认横坐标从-2pi到2pi
举例:以y=x为例
a) 其中一方为对数坐标,另一方为线性坐标
syms x
ezplot('y=x')
set(gca,'xscale','log')
画出y=x曲线,并将横坐标用对数坐标表示,纵坐标用自然坐标。
结果如下:
考虑到图形绿色不够显眼,改为黑色,代码如下:
syms x
h1=ezplot('y=x');
set(gca,'xscale','log')
set(h1,'Color','k') %注意,要将画图ezplot赋给h1
同理,要将y改为对数坐标,而x改为线性坐标,则只要将“xscale”改为“yscale”即可。
syms x
h1=ezplot('y=x');
set(gca,'yscale','log')
set(h1,'Color','k')
特别值得一提的是,如果横坐标用的是z表示,而纵坐标用y表示,即为y=z(而不是x),那么要将横坐标改为对数坐标时依然用“xscale”不能用“zscale”(因为MATLAB默认x表示横坐标)
b) 两边坐标轴都用对数坐标
同样以“y=x”为例,代码如下:
syms x
h1=ezplot('y=x');
set(gca,'xscale','log','yscale','log')
set(h1,'Color','k')
亦即只需将y也改为“yscale”即可。
2)plot下使用对数坐标
a) 一支坐标轴用对数坐标,另一支用线性坐标
clc
x=-6:0.01:6;
y=x;
plot(x,y);%一定是自变量x在前,函数y在后,不能搞混,最好也不要只写plot(y)
semilogx(x,y,'k') %将横坐标x改为对数坐标,纵坐标还是线性坐标,k表示将曲线用黑色表示(此即半对数坐标)
同理,要将纵坐标改为对数坐标,而横坐标为线性刻度,也只需做一微小调整,即将semilogx改为semilogy代码如下:
clc
x=-6:0.01:6;
y=x;
plot(x,y);%一定是自变量x在前,函数y在后,不能搞混,最好也不要只写plot(y)
semilogy(x,y,'k')
b) 横纵坐标都用对数刻度
使用loglog(x,y)
clc
x=-6:0.01:6;
y=x;
plot(x,y);%一定是自变量x在前,函数y在后,不能搞混,最好也不要只写plot(y)
loglog(x,y,'k')
c) log10( ) 以10为底
举例,现有横纵坐标两组数据,横坐标数据为L,纵坐标数据为TT,画对数坐标
导入数据(可以直接从matlab横栏上的导入数据箭头导入),笔者采用代码导入位于桌面中的数据
importdata('C:\Users\Wudl\Desktop\test_')
画图:
plot(log10(L),log10(TT))
由此得到的图是对数坐标下的图,红色区域是对数坐标,比如2,代表10的平方。还可以使用set()函数axis()对图形做一定的限制,如:
axis([0 4 -4 4])横坐标从0到4,y从-4到4
loglog()函数
先在命令中输入figure新建画窗,以便和上面的图对比
然后我们采用loglog()函数
可见loglog函数得到的对数坐标图有底数为10的刻度。
e)先plot再采用画图窗口工具修改坐标为对数形式
plot(L,TT)
或者加一条命令
set(gca,'xscale','log','yscale','log')
至此已经结束,以下为笔者计算某道题时用的代码(作为笔者笔记使用)
clc
clear
c=299792458;
h=0.7;
omegam0=0.3;
syms z
y1=5*log10(2*(1+z-sqrt(1+z))*c/h)
h1=ezplot(y1,[0.005,1.1]); %横坐标的取值范围为0.005到1.1
set(h1,'Color','r')
hold on
y2=5*log10(2*(2-omegam0+omegam0*z-(2-omegam0)*sqrt(1+omegam0*z))*c/(h*omegam0^2));
h2=ezplot(y2,[0.005,1.1])
set(h2,'Color','k')
set(gca,'xscale','log') %注意,一定是xscale,虽然横坐标是z,但不能写成zscale.
y3=5*log10((1+z)*c/h*int((0.7+0.3*(1+z)^(3))^(-1/2),0,z));
h3=ezplot(y3,[0.005,1.1])
set(h3,'Color','b')
set(gca,'xscale','log') %注意,一定是xscale,虽然横坐标是z,但不能写成zscale.
legend('红线为omegam0=1','黑线为Omegam0=0.3且用马丁公式','绿线为omegam0=0.3,omegalambda=0.7')
axis([0.005 1.1 32 46])
%{
以上中y1,y2,y3都是m-M,表示视星等与绝对星等的差值,红移越大值越大表示星的亮度越按,而红移越大
则表示离我们越远。
%}
更多推荐
已为社区贡献11条内容
所有评论(0)