Matlab手记【ING】

14 篇文章 0 订阅
3 篇文章 0 订阅

1、直方图绘制

matrix=Yours;

h=hist(matrix(:),256);
horz=min(matrix(:)):(max(matrix(:))-min(matrix(:)))/255:max(matrix(:));

bar(horz,h);

如图:

绘制拉普拉斯分布和高斯分布:

x=-10:0.05:10;

y=1/sqrt(2)/1*exp(-sqrt(2)/1*abs(x)); %拉普拉斯

y2=1/sqrt(2*pi)*exp(-x.*x/2); %高斯

plot(x,y);

plot(x,y2);

先获得了拉普拉斯分布图:

然后,我们获得了高斯分布图:



2、将向量重新排成图像(注意下面提到的left其实是从right中每列每列取数据的,可能就是跟其它语言的内存模式还不一样)

我们知道这样的代码会产生一个向量:(right为512*512矩阵)

left = right(:);

那么,将left进行运算之后怎样再变成二维的图像输出呢?

实验性地试了下:

tmptry=right; %给tmptry一个模板,让他知道自己至少长成什么样的轮廓

tmptry(:)=left;

imshow(tmptry,[]); %Congratulations!You are good man!

没想到居然成功了,MATLAB真的是太强大了,哈哈。

然而,这样的代码却无法成功(Opps!):

tmptry[];

 for xi=1:1:size(right,1)
        tmptry=[  tmptry;   left(xi:size(right,1):end)]  ;      
end


3、mesh相关

直接将2D矩阵画成三维图:

figure,mesh (sigma);

生成矩阵(x,y)坐标:

[x y]=[x y]=meshgrid(1:width,1:height);


4、Figure/gcf 保存成图片的正确姿势

最近在通过saveas(gcf,filename)保存figure中的图像时,发现保存成的图像宽高比与figure实际显示的不一样,而且不论怎么调整figure大小,保存后的图像宽高比都是固定的一个值。

造成这种问题的可能原因是,saveas实际访问的是figure的底层图像,比如是在onpaint之前的,而不是onpaint之后的图像。

而通过如下方法,就能够使得保存后的图像与figure中实际显示的一致了(引自 http://blog.sina.com.cn/s/blog_4a1853330101eboh.html):

f = getframe(gcf); %# Capture the current window 
imwrite(f.cdata,'image2.jpg'); %# Save the frame data

这种方法能够获取与实际显示的图像在于getframe函数直接访问了gcf呈现给window的图像(这种方式类似于截屏),而不是gcf自有的底层图像。


5、在figure中添加图例

通过legend(str1,str2,.....)实现,

也可以类似于legend(M)这样传递一个数组,其支持普通数组和cell两种,最好通过cell,因为当每个图例描述文字长度不一时,构造普通数组时会报错,而cell不会。

其它一些资料:

http://www.ilovematlab.cn/thread-13240-1-1.html

http://www.ilovematlab.cn/thread-263918-1-1.html

6、绘制坐标轴箭头

在网上看到一些例子,箭头的坐标是固定的,有时候绘制出来不能对齐真实的坐标轴,

为了自适应figure里绘图区的位置和尺寸,需要先获取绘图区的xywh:

arrow_p     =   get(gca,'position');

annotation('arrow',[arrow_p(1) arrow_p(1)],[arrow_p(2)+arrow_p(4) 1]); %画Y轴箭头
annotation('arrow',[arrow_p(1)+arrow_p(3) 1],[arrow_p(2) arrow_p(2)]); %画X轴箭头

相关资料:

http://www.ilovematlab.cn/thread-118735-2-1.html

7、清除figure图像

有时候需要清除figure中显示的所有内容,但是又不想重新开一个figure,毕竟Java runtime memory有限是不~

通过该代码就可以实现:clf;

对,f代表了figure,而换成a就可以清除坐标轴(axes)上的内容了。



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值