这里介绍hist函数结合bar函数绘制统计直方图
一组原始采集数据,如:data=[2 3 -4 -1 4 -5 1 5 -2 -3]; 数据范围为range=-5:5;
首先可以采用hist函数进行分组:
n=hist(data,range); 将数据data根据range进行分组;返回数组n,n的维数同range;
然后用bar画图:
bar(range,n,'hist'); 绘制直方图(柱状图),对分组较少的适用。
有时并没有给定分组范围range,而是希望分成count组:
还是使用hist函数分组:
n=hist(data,count); 将原始数据data自动分成count组,根据原始数据值函数自动设定分组范围,返回值n为数组,维数为count,内容为每一分组的频数;
bar(n); 绘制直方图;
如果这里没有给定count,hist(data)默认分成10组。
hist(data,range)直接绘制直方图,但是每个bar之间有间隙,所以,如果想没有间隙的直方图,推荐使用第一种方法。分组如果较多的话,推荐这种方法。
matlab常用的几个快捷键:
ctrl+r 注释
ctrl+t 取消注释
ctrl+i 自动对齐程序
ctrl+] 增加缩进
ctrl+[ 减少缩进
ctrl+y 恢复撤销的更改
ctrl+w 关闭当前窗口
ESC 清除命令行中一行
ctrl+u 同ESC
ctrl+k 清除光标后至行尾的字符
1. 坐标轴刻度设置set(gca, ’XTick’, [0 1 2]) X坐标轴刻度数据点位置,在值为0,1,2的地方显示刻度set(gca,'XTickLabel',{'a','b','c'}) X坐标轴刻度处显示的字符因此,set(gca,'xtick',[100 200 300],'xticklabel',[1 2 3]) X轴在值为100,200,300的地方显示刻度1,2,3例1:y_tick = {'1.00e-004','1.01e-002','2.01e-002','3.01e-002','4.01e-002',...'5.01e-002','6.01e-002','7.01e-002','8.01e-002','9.01e-002'}set(gca, 'YtickLabel',y_tick);
例2:set(gca,'xticklabel',sprintf('%03.4f|',get(gca,'xtick')));
例1中,当tick值较复杂时,可将tick的值提前赋值到一个变量中,随后利用变量即可;
例2中,在坐标轴刻度的显示过程中可以用sprintf函数,这样即可根据用户的需要显示坐标刻度;注:"|"不可省略
set(gca,'xtick',[]) 不显示x轴的坐标刻度
set(gca,'FontName','Times New Roman','FontSize',14)设置坐标轴刻度字体名称,大小‘FontWeight’,’bold’ 加粗 ‘FontAngle’,’italic’ 斜体对字体的设置也可以用在title, xlabel, ylabel等中
2. 坐标轴范围设置
axis(gca,[xmin xmax ymin ymax]) 设置坐标轴范围
axis auto 根据数据自动设置坐标轴范围
axis off 关闭坐标轴
set(gca,'xlim',[-20 20],'ylim',[-20 20]);设置当前图像的坐标轴范围,等同于axis(gca,[xmin xmax ymin ymax])语句
xlim(gca,[-20 20]);设置当前图像的x坐标轴范围
ylim(gca,[-20 20]);设置当前图像的y坐标轴范围
3. 坐标轴网格
set(gca,'xgrid','on');开启x轴网格
grid on;开启坐标轴网格
MATLAB保存生成高质量的清晰图片
saveas保存jpg格式的图像线条变粗、变模糊,整幅图片就像有一层很薄的水印盖在上面。
解决方案:
(1)其实matlab的出图都是矢量图,你就直接在‘edit’里面选择copy,然后就paste到word里面,伸缩自如,保证清晰
(2)可以试试print
如要把图保存成jpeg的格式的话,可以这样print -djpeg -r85 jpegtest
其中,-djpeg是格式 d表示device,jpeg是格式,-r85 表示像素 85dpi r 表示resolution ,也就是分辨率的第一个字母jpegtest 是文件名
也可以
print('-djpeg','-r300',Path)
或
print(gcf,'-djpeg','-r300',Path)
print( ... )
Same as above but this calls PRINT as a MATLAB function instead of
a MATLAB command. The difference is only in the parenthesized argument
list. It allows the passing of variables for any of the input
arguments and is especially useful for passing the handles
of figures and/or models to print and filenames.
注:dpi的含义
Dots Per Inch的缩写。每英寸所打印的点数或线数,用来表示打印机打印分辨率。一般来说,该值越大,表明打印机的打印精度越高。dpi是指单位面积内像素的多少,也就是扫描精度。dpi越小,扫描的清晰度越低,由于受网络传输速度的影响,web上使用的图片都是72dpi,但是 冲洗照片不能使用这个参数,必须是300dpi或者更高350dpi。例如要冲洗4*6英寸的照片,扫描精度必须是300,那么文件尺寸应该是 (4*300)*(6*300)=1200像素*1800像素。