MATLAB的使用总结
Log scale
1 %# some random data 2 x = 2.^(0:10); 3 y = rand(size(x)); 4 5 plot(log2(x), y) %# plot on log2 x-scale 6 set(gca, 'XTickLabel',[]) %# suppress current x-labels 7 8 xt = get(gca, 'XTick'); 9 yl = get(gca, 'YLim'); 10 str = cellstr( num2str(xt(:),'2^{%d}') ); %# format x-ticks as 2^{xx} 11 hTxt = text(xt, yl(ones(size(xt))), str, ... %# create text at same locations 12 'Interpreter','tex', ... %# specify tex interpreter 13 'VerticalAlignment','top', ... %# v-align to be underneath 14 '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才能看得出移动了。。。
非线性拟合
1 x=[2 5 8 10 20 40 60 80 100 300 1000]; 2 y=[0.0066 0.0095 0.0119 0.0123 0.0207 0.0770 0.1787 0.3410 0.4961 0.8486 1.0000 ]; 3 fun=inline('1-exp(-(x./a(1)).^a(2))','a','x') 4 a=lsqcurvefit(fun,[0.4 0.9],x,y)
inline指定函数形式。a(1)为第一个参数,a(2)为第二个需要拟合的参数……[0.4 0.9]对应于每个参数的初值。
1 a = 2 0.5340 -9.0991
也就是最后的函数为 1-exp(-(x/0.5340)^(-9.0991))。