这篇文档主要记录一些常见但是我还没有掌握的matlab用法,毕竟小白,所以还是多记为妙~
20170418 - matlab 二进制文件读写
读入二进制文件 - fread
1234567% 打开二进制文件% 将文件数据读入变量f中:一维方式存储在f中,num是文件中的数据个数% 关闭文件fip=fopen('test2.out','rb');[f,num]=fread(fip,50*504,'float');fclose(fip)写出二进制文件 - fwrite
1234567891011% 打开二进制文件% 将变量数据写入文件中:一维方式存储在文件中% 关闭文件fid=fopen('V1_01.dat','wb');for j=1:1:300for i=1:1:2500fwrite(fid,a(i,j),'float');endendfclose(fid);
20170418 - matlab中让人相见恨晚的命令
dbstop if error
:如果运行出现错误,matlab会自动停在出错的那行,并且保存所有相关变量。- 不用设置断点;
- 为避免每次在命令行中都要敲入,可以在主函数最前面加入该语句;
- 退出需要执行
dbquit
- 未完待续
20140418 - matlab avi动画制作
VideoWrite函数,配合open,writeVideo和close方法从图像(figure)中创建视频文件、静态图像或Matlab视频。VideoWrite函数可以创建AVI和Motion JPEG 2000格式的视频文件,这些文件在多平台上都能播放,也可以创建在window平台上播放的MPEG-4文件。VideoWrite函数支持大于2GB的视频文件。VideoWrite函数使用预先定义的属性来设置视频属性,例如’Uncompressed AVI’ or ‘MPEG-4’等。
工具函数 - VideoWriter()
1writerObj = VideoWriter(filename,profile);filename:单引号引用的字符串指定视频文件名。文件名可以加扩展名,也可以不加扩展名。Matlab支持的视频文件扩展名如下:
- .avi :avi file
- .mj2:Motion JPEG 2000 file
- .mp4 or m4v:MPEG-4 file (Win7 system only)
Tip:如果文件名不指定扩展名,VideoWrite函数将根据profile的设置来自动加上.avi,.mj2,.mp4 或者.m4v的扩展名,如果没有设置profile的值,VideoWrite函数默认保存为.avi文件。
profile:使用单引号引用的字符串,描述了创建视频的类型。
- ‘Archival’
- ‘Motion JPEG AVI’
- ‘Motion JPEG 2000’
- ‘MPEG-4’
- ‘Uncompressed AVI’
函数方法
- open:Openfile for writing video data 打开视频
- getProfiles:List profiles and file formats supportedby VideoWriter 列出VideoWriter支持的配置和文件格式
- writeVideo:Write video data to file 写视频
- close:Closefile after writing video data 写完视频数据后关闭文件
基本步骤
创建视频并打开该视频文件
12writerObj=VideoWriter('test.avi'); %// 定义一个视频文件用来存动画open(writerObj); %// 打开该视频文件在循环中获取图像中的帧
1frame = getframe; %// 把图像存入视频文件中将帧写入视频文件
1writeVideo(writerObj,frame); %// 将帧写入视频循环结束后关闭视频文件
1close(writerObj); %// 关闭视频文件句柄
其他设置
改变帧数
12% 此语句必须在open语句之前writerObj.FrameRate=2; % 默认30,即1秒30幅图改变像素尺寸
123frame = getframe;frame.cdata = imresize(frame.cdata, [H W]); %// 设置视频宽高:H为行数(高),W为列数(宽)writeVideo(writerObj,frame);VideoWrite()函数默认根据第一帧的大小决定保存视频高和宽,并且没有给出自定义视频尺寸的方法。网上搜了很久,没有找到如何改变保存视频像素尺寸的方法。设置断点调试,发现frame=getframe;获取的帧frame为一个结构体,包含两个成员:
cdata为数据,colormap为调色板。cdata的尺寸378×607就是第一帧读取的图像的尺寸,VideoWrite()函数将默认以该尺寸保存所有图像帧到视频文件。
有时,图像绘制过程中,如果曲线的尺寸会随时间变化:变小不会有问题,而如果曲线尺寸超过378×607就会出错。为了避免因此造成的错误,可以通过在读完每一帧后改变该帧的尺寸,来实现将视频保存成自定义的长宽,不足的部分自动用figure的底色填充。
注意:matlab是区分大小写的,所以这里用的VideoWriter()以及writeVideo中的大小写不可随意改变。
参考:
- Matlab—将绘图保存为视频VideoWrite()函数用法与自定义视频尺寸
- help VideoWriter
2017 - 05 - 04 matlab中的Renderer
1.首先解释下什么是Renderer:
A renderer is the software that processes graphics data (such as vertex coordinates) into a form that MATLAB can use to draw into the figure. MATLAB supports three renderers:
1) Painters
2) Z-buffer
3) OpenGL
Renderer(扫描器)是一种图像数据转换程序,通过这个程序,可以把图像数据转化为Matlab可以用来画图的内容。可以这样理解:Renderer(渲染器,描绘器)是matlab用来画图(即将数据转化为图像)的方式。
它三种方式:1)Painters 2) Z-buffer 3) OpenGL
2.三种方式的比较
1)painters 再画简单的图画时,比较快;
2)z-buffer 又称深度缓冲技术,它是现在内存中画图,然后再将最终的图像显示在显示终端。这样的话,当在一个像素点,如果被多次赋值的话,它只会显示最高层的图像。
3) opengl 是利用硬件进行绘图的方式。
2017 - 05 - 10 matlab中不同长度字符串数组
使用cell数组,关键点:{ }
元胞数组是MATLAB的一种特殊数据类型,可以将元胞数组看做一种无所不包的通用矩阵,或者叫做广义矩阵。组成元胞数组的元素可以是任何一种数据类型的常数或者常量,每一个元素也可以具有不同的尺寸和内存占用空间,每一个元素的内容也可以完全不同,所以元胞数组的元素叫做元胞(cell)。和一般的数值矩阵一样,元胞数组的内存空间也是动态分配的。
|
|
参考:
2017 - 06 - 11 matlab中的字体设置
通用格式
1title(['\fontsize{6}\fontname{宋体}中文\fontsize{7.5}\fontname{the new time}english']);采用句柄设置
1set(gca,'FontSize',20);