(整理)matlab命令.
将excel数据导⼊
直接将下⾯三句话导⼊
[filename, pathname]= uigetfile('*.xls'); %寻源⽂件
file=[pathname filename]; %赋名
x=xlsread(file); %格式转换为矩阵
之后就⽤x来代表导⼊的这个矩阵。
如excel ⾥输⼊了 1 2 3
4 5 6
如下命令
x(1,:)
ans =
1 2 3
Matlab提供了从磁盘⽂件或剪贴簿转载数据⾄⼯作区(数据导⼊)和将⼯作区变量存⼊磁盘⽂件(数据导出)的多种途径。
最简单的办法是使⽤界⾯导⼊向导,打开⽂件菜单中的导⼊数据⽽后按提⽰操作。Matlab ⽀持的主要数据⽂件类型和对应函数如下:
导⼊⽂本⽂件
⽂本⽂件需要具备统⼀的⾏列模式,使⽤分隔符作为数据项间隔,这些分隔符包括空格、逗号、tab、分号或其它。数据⽂件可能附带标题⾏和⾏列头标签。
数值数据
对于数值数据可以直接使⽤load函数装载,例如中数据如下:
1 2 3 4 5
6 7 8 9 10
命令A = load('')装载该⽂本⽂件数据。
如果数值数据使⽤其它分隔符,可以使⽤dlmread读⼊,假设中数据如下:7.2;8.5;6.2;6.6
5.4;9.2;8.1;7.2
命令A = dlmread('', ';')读⼊该数据。
包含⾏列标签的数值数据
例如:
Grade1 Grade2 Grade3
78.8 55.9 45.9
99.5 66.8 78.0
89.5 77.0 56.7
fid = fopen('grades.dat', 'r');
grades = textscan(fid, '%f %f %f', 3, 'headerlines', 1);
fclose(fid);
包含字符和数值的混合数据
使⽤textread函数读⼊。
导出⽂本⽂件
save函数
A = [ 1 2 3 4 ; 5 6 7 8 ];
save my_data.out A –ASCII
dlmwrite函数
dlmwrite('my_data.out',A, ';')
MS-Excel电⼦表格⽂件
xlsinfo获得⽂件信息
使⽤命令[type, sheets] = xlsfinfo(filename)返回⽂件类型type和⼯作表信息。如:[type, sheets] = xlsfinfo('tempdata.xls')
Xlswrite导出数据
d = {'Time', 'Temp'; 12 98; 13 99; 14 97}
命令xlswrite('tempdata.xls', d, 'Temperatures', 'E1')将单元格数组d的数据写出⾄tempdata.xls ⽂件,新建⼯作
表'Temperatures',从该⼯作表的E1单元格开始写⼊。
Xlsread读⼊数据
ndata = xlsread('tempdata.xls', 'Temperatures')
[ndata, headertext] = xlsread('tempdata.xls', 'Temperatures' )
在各论坛上看到很多关于这⽅⾯的问题,其实很简单的,MATLAB提供了这⽅⾯的⽐较⽅便的⼯具,可以通过File-import data 来从外部向MATLAB的WORKSPACE导⼊⼤量数据(原始数据⽂件的数据要有⼀定规律(⾏、列))如果数据⽂件本⾝没有说明⽂字(字母),就只有⼀个个的数据,可以使⽤load(’filename‘)函数来加载数据,数据导出直接可以将要保存的数据保存到*.mat⽂件(在workspace中选择要保存的变量右键选另存为即可)。当然导⼊导出数据也可以⽤fprintf,fscanf等⽂件操作指令进⾏,这样的好处在于可以在⽂件中写⼊⼀些提⽰性⽂字。
1。如果F是⼀维矩阵,则FX=gradient(F,H)返回F的⼀维数值梯度。H是F中相邻两点间的间距。
2。如果F是⼆维矩阵,返回F的⼆维数值梯度。
[FX,FY]=gradient(F,HX,HY)。HX,HY参数表⽰各⽅向相邻两点的距离。
3。如果F是三维矩阵,返回F的三维数值梯度。
[FX,FY,FZ]=gradient(F,HX,HY,HZ)。
HX,HY,HZ参数表⽰各⽅向相邻两点的距离。
例:
>> x=[6,9,3,4,0;5,4,1,2,5;6,7,7,8,0;7,8,9,10,0]
x =
6 9 3 4 0
5 4 1 2 5
6 7 7 8 0
>> [Fx,Fy]=gradient(x)
Fx =
3.0000 -1.5000 -2.5000 -1.5000 -
4.0000
-1.0000 -2.0000 -1.0000 2.0000 3.0000
1.0000 0.5000 0.5000 -3.5000 -8.0000
1.0000 1.0000 1.0000 -4.5000 -10.0000
Fy =
-1.0000 -5.0000 -2.0000 -2.0000 5.0000
0 -1.0000 2.0000 2.0000 0
1.0000
2.0000 4.0000 4.0000 -2.5000
1.0000 1.0000
2.0000 2.0000 0
gradient()是求数值梯度函数的命令。[Fx,Fy]=gradient(x),其中Fx为其⽔平⽅向上的梯度,Fy为其垂直⽅向上的梯度,Fx的第⼀列元素为原矩阵第⼆列与第⼀列元素之差,Fx的第⼆列元素为原矩阵第三列与第⼀列元素之差除以2,以此类推:Fx(i,j)= (F(i,j+1)-F(i,j-1))/2。最后⼀列则为最后两列之差。同理,可
以得到Fy。
1、在上MATLAB课的时候,有学⽣问怎么⽤gradient函数求f=2x2+3y3的梯度啊,不懂得怎么写格式,试了很多次都不⾏.解答如下:
在MATALB中,求梯度只能是求数值梯度,所以必须将函数f离散化,⽤差分代替微分,精度取决于差分步长,因为现在计算机速度⾜够快,所以差分可以取得⾜够⼩,也不影响计算速度和计算精度.⽅法如下:
>>X=-6:0.6:6; %计算区间是[-6 6],步长0.6
>>Y=X;
>>[x,y]=meshgrid(X,Y) %⽣成计算⽹格
>>f=2.*x.^2+3.*y.^3 %计算⽹格结点上的函数值
>>[Dx,Dy]=gradient(f) %⽤数值⽅法求函数梯度
>>quiver(X,Y,Dx,Dy) %⽤⽮量绘图函数绘出梯度⽮量⼤⼩分布
>>hold on
>>contour(X,Y,f) %与梯度值对应,绘出原函数的等值线图
结果如下:
2、
⼜如,研究偶极⼦(Dipole)的电势(Electric potential)和电场强度(Electric field density)。设在处有电荷,在处有电荷。那么在电
荷所在平⾯上任何⼀点的电势和场强分别为,。其中,。⼜设电荷
>>clear;clf;q=2e-6;k=9e9;a=1.5;b=-1.5;x=-6:0.6:6;y=x;
>>[X,Y]=meshgrid(x,y); %设置坐标⽹点
>>rp=sqrt((X-a).^2+(Y-b).^2);rm=sqrt((X+a).^2+(Y+b).^2);
>>V=q*k*(1./rp-1./rm); %计算电势
>>[Ex,Ey]=gradient(-V); %计算场强
>>AE=sqrt(Ex.^2+Ey.^2);Ex=Ex./AE;Ey=Ey./AE %场强归⼀化,使箭头等长
>>cv=linspace(min(min(V)),max(max(V)),49); %产⽣49个电位值
>>contourf(X,Y,V,cv,'k-')
>>title('\fontname{⾪书}\fontsize{22}偶极⼦的场'), %写图标题命令
>>hold on
>>quiver(X,Y,Ex,Ey,0.7)
图形如下:
%[c,h]=contour(z); %画等值线图
%[c,h]=contourf(z); 并⽤颜⾊填充
%hlabel=clabel(c,h); %表⽰图中线条上所标值的个数 h label %hclrbar=colorbar; %显⽰颜⾊筐
matlab等高线填充颜%set(hclrbar,'fontsize',20); %颜⾊筐的⼤⼩
%set(gca,'fontsize',20); %坐标系数的字体⼤⼩
%set(hlabel(:),'fontsize',20); %h标值的⼤⼩
x=[-10.5 -7 -3.5 0 3.5 7 10.5 -10.5 -7 -3.5 0 3.5 7 10.5 -10.5 -7 -3.5 0 3.5 7 10.5 -10.5 -7 -3.5 0 3.5 7 10.5]; y=[2 2 2 2 2 2 2 5 5 5 5 5 5 5 8 8 8 8 8 8 8 11 11 11 11 11 11 11];
z=[30 31 32 33 32 31 30 31 32 33 34 33 32 31 32 33 34 35 34 33 32 33 34 35
36 35 34 33];
[X,Y]=meshgrid(min(x):max(x),min(y):max(y));
Z = griddata(x,y,z,X,Y);
[c,h]=contour(X,Y,Z);
clabel(c,h);
给你两个主要⽤法:
contour(x,y,z,等值线条数)
contour(x,y,z,[z1,z2,z3,z4,...])画指定值的等值线。你可以⽤第⼆个⽤法。强制输出特定的等值线。
1,计算图像的梯度,⽤gradient()函数;
2,quiver函数绘制梯度场(⽮量场);
⽰例:
I = imread('rice.png');
I=double(I);
[X,Y]=gradient(I);
figure,imshow(I,[]);hold on;quiver(X,Y)
A a
abs 绝对值, 模
acos 反余弦
acosh 反双曲余弦
acot 反余切
acoth 反双曲余切
acsc 反余割
acsch 反双曲余割
all 所有元素均⾮零则为真
alpha 透明控制
angle 相⾓
ans 最新表达式的运算结果
any 有⾮零元则为真
area ⾯域图
asec 反正割
asech 反双曲正割
asin 反正弦
asinh 反双曲正弦
atan 反正切
atan2 四象限反正切
atanh 反双曲正切
autumn 红、黄浓淡⾊
axis 轴的刻度和表现
B b
bar 直⽅图
binocdf ⼆项分布概率
binopdf ⼆项分布累积概率
binornd 产⽣⼆项分布随机数组blanks 空格符号bode 给出系统的对数频率曲线
bone 蓝⾊调浓淡⾊阵
box 坐标封闭开关
break 终⽌最内循环
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论