matlab生成的图片有边,科学网—图片空白边缘处理/统计直方图---matlab/保存生成高质量的清晰图 - 杨小林的博文...

这里介绍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像素。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值