易混难点总结:
1、查看类型变量用class(h) or is~(~为验证的变量类型,如char)
2、字符单元数组用{'s1';'s2'??}表示或由字符数组['s1','s2'??]用cellstr函数转变成字符单元数组
3、sprintf与sscanf函数中sprintf以%为初始化字符开始,和c一样按固定格式输出的作用 4、num2str与str2num 5、创建结构数组时
6、单元数组①单元索引赋值左边下标正常放()内,右边将单元内容放{}中 ②赋值语句把下标放在花括号内,右边直接指定单元内容 7、函数句柄是一个特殊的函数类型类似C语言的指针 8、length返回矩阵最长维的长度numel返回矩阵的元素数 size 返回矩阵的每一维长度ndims返回矩阵的维数 9、矩阵在内存中是逐列存储的
10、for循环条件句为k=A(A为矩阵时),A按列赋值给k,所以循环次数为列数n,与c不同的是在条件中直接给出自增量得出循环次数。 11、nargin、nargout分别是输入输出参数的个数函数其函数本身无参数而是在函数体中计算所在函数的输入输出参数个数并以其值得方式返回。
12、varargout用在传送或者返回的参数数目不定时,将其作为黑箱放在参数的位置,如function c=myfun(vararfgin),则在命令行调用函数myfun时,输入参数可以为任意个,而varargout函数定义在返回值的位置, function varargout=foo(n) 13、字符在matlab中是以整数存储的
14、数据转换时字符和字符串是不一样的,char([109 97;116 108])返回ans =ma tl而mat2str([109 97;116 108])返回值为ans =‘[109 97;116 108]’为一整个字符串
15、字符数组与数组字符串区别开,数组字符串是一整个字符串,为一维的,而多维字符数组按照多维数组的格式排行列,且每行有相同的长度,普通变量定义时必须输入长度相同或者用空格补齐相同的长度,用char类型定义时自动补齐,也可将字符数组用cellstr转变成另一类数据类型:字符串单元数组
16、k*rand(n)函数是随机产生一个n行n列的矩阵,元素值在0~k之间 17、repmat(temp,m,n)是将temp作为一个元素复制到m行n列
18、all(A,1)all(A,2)当A为矩阵时,一个检查列一个检查行,分别返回一个行向量和列向量对应每个列和行是否全为1
19、findstr、strfind都返回下标位置
20、save filename str* 其中str*是一个字符串单元数组的特殊表示 21、whos -file filename查看filename中的变量 22、findall(h_list,'p','value','-logical','p2','value2')
23、图形对象的共有属性中visible和HandleVisibility分别指定对象和对象的句柄的可见性, 24、用set(0,'hideundocumented','off')设置显示根对象的隐藏属性
25、默认的CloseRequestFcn(窗口关闭时执行的函数)值为closereq函数,其并没有删除GUI执行过程的全局变量,所以有时会导致程序运行错误,可在函数中加入clear global 26、axes是创建坐标轴,axis是设定其范围
27、若XDate、YData为一个行向量,则将其重复扩展成与ZData列数相同的向量。 28、查看窗口的标准工具栏、菜单栏对象用find功能,需要先生成窗口,然后findall(h,'type','函数名'),要隐藏工具栏的uipushtool按钮,可用如下》figure 》
h2=findall(0,'type','uipushtool') 》set(h2,'visible','off')
29、uitoggletool在工具栏创建跳转按钮,查看uitoggletool对象用find函数,共有8个uitoggletool对象,返回值h(重要)是一个包含8个其对象句柄的句柄向量,分别查看其属性列表用for循环,也可进行其他操作,比如隐藏
30、uitable对象是Java对象,它将用户数据转换为Java数组存入Data中,Java每次只能获取一个,因此要获取表格全部数据,存入一个字符串单元数组,可采用循环方法
31、units属性值指定了matlab用来度量尺寸和位置的单位。以figure的units属性值来说: normalized:figure的左下角的坐标为【0 0】,右上角的坐标为【1 1】,figure变大变小,坐标尺寸也会按比例变大变小,但坐标范围恒归一化为1。inches, centimeters, 和 points 是绝对单位,一个点等于1/72英寸;pixels像素取决于屏幕的分辨率;characters单位取决于系统缺省的字体值,一个characters的宽度相当于x字符的宽度;高度是两行文字的基准线的高度。
32、plot和line都可以画正弦图,只是画图的方式不一样 33、对象的tag值与句柄值的区别
34、colormap中常用map.autumn 从红色平滑变化到橙色,然后到黄色;
.bone 具有较高的蓝色成分的灰度色图。该色图用于对灰度图添加电子的视图。 .colorcube尽可能多地包含在RGB颜色空间中的正常空间的颜色,试图提供更多级别的灰色、纯红色、纯绿色和纯蓝色。《Simulink与信号处理》
.cool 包含青绿色和品红色的阴影色。从青绿色平滑变化到品红色。 .copper 从黑色平滑过渡到亮铜色。 .flag 包含红色、白色、绿色和黑色。 .gray 返回线性灰度色图。
.hot 从黑色平滑过度到红色、橙色和黄色的背景色,然后到白色。 book.iLoveMatlab.cn .hsv从红色,变化到黄色、绿色、青绿色、品红色,返回到红色。 .jet 从蓝色到红色,中间经过青绿色、黄色和橙色。
.line 产生由坐标轴的ColorOrder属性产生的颜色以及灰色的背景色的色图。 .pink 柔和的桃红色。
.prism 重复这六种颜色:红色、橙色、黄色、绿色、蓝色和紫色。 .spring 包含品红色和黄色的阴影颜色。 summer 包含绿色和黄色的阴影颜色。 .white 全白的单色色图。Matlab中文论坛 .winter 包含蓝色和绿色的阴影色
35、uicontrol对象用户接口控制图形对象(user interface controls)的简称 36、set函数设置变量值时无需提前创建变量
37、close与closereq区别,后者不仅关闭图形窗口而且删除窗口
38、uitoggletool与uipushtool区别在于前者主要属性回调函数包含弹起与按下两个
39、在Matlab里利用图形的“EraseMode”属性可以实现显示新对象,擦除旧对象,而 又不破坏背景图案。图形的“EraseMode”属性有以下四种:
normal 方式重绘整个显示区,这种方式产生的图形最准确,但较慢。 none 方式不做任何擦除,直接在原来图形上绘制。
xor方式对象的绘制和擦除由背景颜色和屏幕颜色的异或而定。只擦除和屏幕颜色不一致 的旧对象的点,只绘制和屏幕颜色不一致的新对象的点。
background 方式把旧对象的颜色变为背景色,这种方式影响被擦除对象下面的对象。当新对象的属性修改后,应刷新屏幕,使新的对象显示出来。Matlab里屏幕刷新的命令是drawnow。
drawnow命令使Matlab暂停目前的任务而去刷新屏幕。若不使用drawnow命令,Matlab则等到任务序列执行完后才刷新。
40、预定义对话框是一系列句柄图形对象的图形窗口(公共对话框、matlab的自定义对话框) 41、在回调函数见共享数据,在gui中使他变为全局变量最有效的方法是将其存入handles中
42、读取一帧camera = cv.VideoCapture(); for j=1:100
img= camera.read; % 读出一帧视频 img=imresize(img,0.5); % 窗口缩小一半 imshow(img); % 显示图像 pause(0.001); % 暂停0.001秒 end
camera.delete; % 关闭摄像头 43、selectiontype
normal:代表单击鼠标左键;
extend:代表Shift+左键,或者同时按左右键; alt:代表Ctrl+左键,或者单击右键; open:代表双击鼠标任意键。
44、MATLAB中gcf、gca、gco、gcbf、gcbo的区别
gcf返回当前Figure对象的句柄值 gca返回当前axes对象的句柄值 gco返回当前鼠标单击的句柄值,该对象可以是除root对象外的任意图形对象,并且Matlab会把当前图形对象的句柄值存放在Figure的CurrentObject属性中。
45、MATLAB中保存图像 是不是要这样的效果图 imwrite,print,saveas三个函数的区别如下: 在讲解之前,希望您区分图像和图形,前者就是我们说的位图,比如数码相机拍照的相片,后者是矢量图,就是扩大都不会改变的,比如3d软件绘制的图形 imwrite将图像数据写成图像文件,一般用于图像处理,当我们使用imshow将一副图像使显示在坐标系上时,我们可以使用如下方式保存图像 I=getimage(gcf); % 获取坐标系中的图像文件数据 imwrite(I,'myphoto.jpg')%保存图像为文件 复制代码 saveas就是菜单中的 save as(另存为)命令,将当前坐标系下的图形保存为图像文件,不管你坐标系中显示的图像还是图形,一律当成图形处理,他的本质是截图(除fig文件外) print是打印命令,但是可以将当前坐标系中的内容打印到文件,或者打印到剪切板,saveas只是print函数的简化版 print(fh,'-dmeta');% 复制到剪切板 复制代码 46、matlab中saveas(handle,['目录','文件名']) 如果只有一幅图,handle设为gcf 如果有多副,handle需单独设置
matlab中imwrite(image_data,['directory\\','filename']) 需要与getframe连用
两个命令都可以用来保存图像,区别在于
1、背景色:saveas保存的图像背景色自动设置为白色,imwrite保存图像为所见即所得 2、图像大小:saveas无视你设置的图像大小,按默认保存,imwrite保存所见即所得 contrast example:在当前目录下image文件夹下找到两个图像,对比一下 clear clc
GUI设计学习笔记(非常详细)



