Log scale
%# some random data
x = .^(:);
y = rand(size(x)); plot(log2(x), y) %# plot on log2 x-scale
set(gca, 'XTickLabel',[]) %# suppress current x-labels xt = get(gca, 'XTick');
yl = get(gca, 'YLim');
str = cellstr( num2str(xt(:),'2^{%d}') ); %# format x-ticks as ^{xx}
hTxt = text(xt, yl(ones(size(xt))), str, ... %# create text at same locations
'Interpreter','tex', ... %# specify tex interpreter
'VerticalAlignment','top', ... %# v-align to be underneath
'HorizontalAlignment','center'); %# h-aligh to be centered
设置label位置
xlabh = get(gca,'XLabel');
set(xlabh,'Position',get(xlabh,'Position) - [0 .2 0])
这一句会使得xlabel向下0.2个单位,单位就是y轴的单位。如果y轴的单位是10^5,那么就需要0.2*10^5才能看得出移动了。。。
非线性拟合
x=[ ];
y=[0.0066 0.0095 0.0119 0.0123 0.0207 0.0770 0.1787 0.3410 0.4961 0.8486 1.0000 ];
fun=inline('1-exp(-(x./a(1)).^a(2))','a','x')
a=lsqcurvefit(fun,[0.4 0.9],x,y)
inline指定函数形式。a(1)为第一个参数,a(2)为第二个需要拟合的参数……[0.4 0.9]对应于每个参数的初值。
a =
0.5340 -9.0991
也就是最后的函数为 1-exp(-(x/0.5340)^(-9.0991))。