duguyun 发表于 2006-10-9 15:52

求助,Matlab 上怎么设定X轴的坐标?

折腾一个早上了,也没弄出来,只好来麻烦各位了!谢谢!
这是一幅物理上光学部分经常见到的衍射光强分布图,
现在老板要求在X轴上根据衍射光强的级数进行标定,
即,根据峰值的不同,在X轴上分别标定:-5级,-4级,-3级,-2级,-1级,0级,1级,2级,3级,4级,5级……等条纹
而不是现在采用弧度表示,
现在想请问各位,在Matlab里该如何实现?
最好能用程序代码实现 ,因为老板有点……呵呵
谢谢!
拜托!

eight 发表于 2006-10-9 16:07

x = 1:5;
set(gca,'XTick',x);
set(gca,'XTickLabel',num2str(x));

aehrmanner 发表于 2006-10-10 10:39

绘出图形后直接在图形窗口界面更改就可以了啊!

lb107 发表于 2006-10-10 11:00

给个例子给你:
>> x=1:6;
>> y=35*rand(1,6);
>> bar(x,y)
>> xlabel('月份')
>> ylabel('平均温度(^{o}C)')   %%% 摄氏度符号℃输入!!!!
>> set(gca,'xticklabel',{'一月','二月','三月','四月','五月','六月',})

duguyun 发表于 2006-10-10 22:27

首先谢谢各位的帮忙!
to eigth 兄: 你说的办法貌似可行,但有点问题就是,X轴标的级数,即,-5,-4,-3,……,3,4,5无法和相应的峰值对齐,标称有一定的误差,
to aehrmanner 兄:你说的办法,我试过,但没成功,其一,原有的坐标不好去掉,其二无法准确标定,不知能否详细点!谢谢!
to lb107 兄: 多谢提供这段代码,这和eight 兄提供的建议比较接近,但还是无法准确标定,

duguyun 发表于 2006-10-10 22:32

下附相应的程序代码,供各位参考,希望大家指点一二,谢谢!

%光栅衍射函数

clear all;
clc;

d = 4.5;
b = 1.5;
N = 5;
lamga = 0.8;
m = 1;

for i=-0.5:0.001:0.5
    seta = i*pi;   
    temp_1 = (sinc(b*sin(seta)/lamga))^2;
    temp_2 = (N*sinc(N*d*sin(seta)/lamga)/sinc(d*sin(seta)/lamga))^2;
    I(m) = temp_1*temp_2;
   
    m = m+1;
end

x = -0.5:0.001:0.5;

figure
plot(x*pi,I);

x=-5:5;
set(gca,'XTick',0);
set(gca,'XTickLabel',num2str(x,0.03));

%set(gca,'XTickLabel',{'-3','-2','-1','0','1','2','3'});这一行用于替换紧接着的上面三行以实现 lb107兄的建议


axis tight
title('光栅衍射分布图');
xlabel('单位为弧度')

[ 本帖最后由 duguyun 于 2006-10-10 22:34 编辑 ]

jimin 发表于 2006-10-10 22:43

X轴标的级数,即,-5,-4,-3,……,3,4,5无法和相应的峰值对齐,标称有一定的误差,
和相应的峰值对齐,这样标出的是不等间距的,好象可以在峰值下面写个数字,用text来实现,在之前要做的工作是把峰值点的横坐标找到
只是说一个思路,没仔细想,这几天忙ing
页: [1]
查看完整版本: 求助,Matlab 上怎么设定X轴的坐标?