Matlab 小知识1、翻转fliplr(左右)、flipud(上下)fftshift()上下左右fftshift(,1)对行(row)同时操作,引起列的变化(不是简单的上下) 类似fpliudfftshift(,2)对列(column)同时操作,引起行的变化(不是简单的左右) 类似fplilreg:a=[1 2 3;4 5 6; 7,8 9];fliplr=321654987flipud=789456123fftshift=978312645fftshift(a,1)=789123456fftshift(a,2)=3126459782、data:Naz*Nrg,行为方位向,列为距离向fft(,[],1)同时对一列进行fft,在SAR数据处理中为方位向FFT,变换到距离时域,方位频域(距离-多普勒域)== fft()fft(,[],2)同时对一行进行fft,在SAR数据处理中为距离向FFT,变换到距离频域,方位时域。
== fft(x.’).’fft(,[],1) + fft(,[],2) = fft2()3、conj(共轭) conv(卷积)4、imagesc,colormap(gray)5、转置:“’” 对于复数为共轭转置,若要只转置不取共轭,则应该是“.’”对于实数,“’”即可实现转置。
6、对于有复数j的程序,在循环中切忌再次使用j作为循环变量,同理,不可再次定义变量j进行其他运算。
7、算法优化:a) sinc(1:100)比单独计算sinc(1)…sinc(100)快N倍;b) 如果遇到a^2*b^2,则可以先计算(a*b)再对乘积求平方;8、eps 计算机最小正数,在pc机上,它等于2e-52。
9、保存的指令格式(1)save 工作间中的所有变量保存在磁盘上名为matlab.mat 的文件中。
(2)save [文件名] [变量名] 将指定的变量保存在指定文件中,如:save temp x y z 把x,y,z 这三个变量保存在文件temp.mat 中。
在下次加载MATLAB 时可以利用load 指令将保存在文件中的变量恢复到工作间中其格式有:(1)load 将保存在matlab.mat 中的变量装入到MATLAB 工作间中。
(2)load [文件名] [变量名] 从指定的文件中将指定的变量装入。
save e:\mydir\data ARload e:\mydir\data AR10、reshape(变量,行,列)11、取整函数:fix朝零方向取整ceil 朝正无穷大方向取整floor朝负无穷大方向取整round 四舍五入到整数12、rand产生在0~1之间均匀分布的随机数;每调用一次给一个新的数值。
rand产生零均值、单位方差的正态分布随机数。
13、[z,i]=max(a),a为向量;则z为最大值,i为第一个最大值的位置14、ROIPOLY 学习用于点目标分析,编写点目标分析函数15、figure(i):图像显示为figure i;figure(‘name’,’****’):显示为名为’****’的图像,即给图像加名字;16、strcat:strcat('a','b') = ab;cat(DIM,a,b):DIM = 1,b接在a的下面,列连接行增加;DIM = 2,b接在a的后面,行连接列增加;17、图像输出imwrite(A,’F:/photo.jpg’,jpg); 其中,A为矩阵saveas(gcf, ’F:/photo.jpg’,jpg);其中,gcf获取当前图像18、不显示坐标轴:axis off图像充满绘图区:set(gca,'looseInset',[0 0 0 0]);set(gca,'LooseInset',get(gca,'TightInset'));set(gca,'units','normal','pos',[0 0 11],'PlotBoxAspectRatioMode','auto','DataAspectRatioMode','auto');% 保存图像,不带坐标轴plot(rand(100,1))axis offsaveas(gcf,'curve1.bmp')19、matlab调用VS生成的exe[exe位置、输入文件、输出位置]comd =['F:\IECAS\SIFT\SIFT_registration\x64\Debug\SIFT_registration.exeF:\IECAS']system(comd)20、squeeze:除去size为1的维度,如果无为1的维度,则不发生改变。
如:size(A)=[4,1,3]; B = squeeze(A);则size(B)=[4,3];size(A)=[4,2,3]; B = squeeze(A);则size(B)=[4,2,3];21、sub2ind:该函数用于把矩阵中的元素全部下标标识转换为该元素在矩阵中对应的单下标标识。
ind2sub:该函数用于把矩阵中的元素单下标标识转换为该元素在矩阵中对应的全部下标标识。
如:A=[1,2,3;4,5,6;7,8,9];f = sub2ind(size(A),2,3); f = 8;将第二行第三列的数(6),从第一列顺次数过去(6在第八个数上(与矩阵A的值无关));[i,j]=ind2sub(size(A),8); i=2,j=3;22、linspacemeshgrad23、矩阵乘法运算:matlab中分为“乘积”与“点乘”,而在实际公式中并无点乘,只有乘积一种运算;点乘与叉乘是针对向量的运算:a b •点乘:向量内积,得到的结果为数值,T T a b a b a b •=*=a b ⨯叉乘:向量外积,得到的结果为向量,与a 、b 垂直并构成右手坐标系(a b 垂直时)24、在matlab 的title 中加入变量a = 60;b=[num2str(a),'hao']; figure; plot(rand(10,1)); title(b)得到的图像title 为60hao ;即图像名字会随变量a 的改变而变化。
绘图一、Matlab绘图中用到的直线属性包括:(1)LineStyle:线形(2)LineWidth:线宽(3)Color:颜色(4)MarkerType:标记点的形状(5)MarkerSize:标记点的大小(6)MarkerFaceColor:标记点内部的填充颜色(7)MarkerEdgeColor:标记点边缘的颜色1、线形23二、描绘不同的直线当我们需要对不同类别的数据点进行连线的时候,可以设置以下属性来区分不同类别的点和相应的直线:(1)LineStyle:线形(2)MarkerSymbol:点形(3)Color:颜色例如:plot(x,y,'-.or','MarkerFaceColor','g')其中线形为点横线,数据点形状为圆圈,线条和数据点边缘的颜色都是红色,数据点的填充颜色为绿色。
三、描绘数据点的分布有时候我们希望画出数据点的分布情况,不需要画出这些点之间的连线,则可以按以下方式实现:plot(x,y,'d')即只定义数据点的点形。
最后给出一个例子说明怎样运用以上属性来画图:plot(t,sin(2*t),'-mo', 'LineWidth',2, 'MarkerEdgeColor','k', 'MarkerFaceColor',…[.49 1 .63], 'MarkerSize',12)字体figure_FontSize=12;set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');set(findobj('FontSize',12),'FontSize',figure_FontSize);%这4句是将字体大小改为8号字,在小图里很清晰%set(gcf,'Position',[100 100 260 220]);%这句是设置绘图的大小,不需要到word里再调整大小。
我给的参数,图的大小是7cm%set(gca,'Position',[.13 .17 .80 .74]);%这句是设置xy轴在图片中占的比例,可能需要自己微调。
%set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);%这句是将线宽改为2set(gca, 'Fontname', 'Times newman', 'Fontsize', 12);%设置图片的字体类型和字号大小的。
Data cursorset(findall(gcf,'ViewStyle','datatip'),'fontsize',15)更改已画出Figure上的字体h = gca; 获取当前绘图坐标的指针set(h,'FontSize',18);最优化问题最优化工具:optimtool优化函数:fmincon—寻找约束非线性多元函数的最小值fminimax—解决最小最大约束问题fminunc—寻找无约束多元函数的最小值fsolve—解决非线性方程组fzero—寻找一元连续函数的根fsqcurvefit—解决非线性曲线拟合问题在最小二乘意义下fsqlin—解决约束线性最小二次问题。