许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  Matlab常用用法技巧:函数与语法汇总

Matlab常用用法技巧:函数与语法汇总

阅读数 4
点赞 0
article_banner

导入Excel文件为mat文件

把数据复制到工作区,并将这个矩阵命名为X:

(1)在工作区右键,点击新建(Ctrl+N),输入变量名称为X

(2)在Excel中复制数据,再回到Matlab中右键,点击粘贴Excel数据(Ctrl+Shift+V)

(3)关掉这个窗口,点击X变量,右键另存为mat文件(下次就不用复制粘贴了,只需使用load 命令 即可加载数据)

(4)注意,代码和 .mat文件要放在同一个目录下,且Matlab的当前文件夹也要是这个目录。

(5)加载数据:在代码前加入 load 方法

load data.mat

作图

画一个矩形边框:

axis([0,pi, 0,a/2]);   box on;  % 画一个坐标轴的框架,x轴位于0-pi,y轴位于0-a/2, 并打开图形的边框% 画出来是一个矩形 plot(phi(i), x(i), 'r.') hold on; % 设置横纵坐标的范围并标上字符x = 1:0.01:3;y = x .^ 2;plot(x,y)  % 画出x和y的图形pause(3)  % 暂停3秒后再继续接下来的命令text(2,4,'我')  % 在坐标为(2,4)的点上标上字符串:我close % 关闭图形窗口

三维图

mesh 网格图

X = [1,2,4]Y = [3,5]Z = [4,8,10;     5,9,13]mesh(X,Y,Z)  % 反过来了!!!(X(j), Y(i), Z(i,j))是线框网格线的交点的坐标% (1 3 4) (2 3 8) (2 5 9) (1 5 5)xlabel('x轴');  ylabel('y轴');  zlabel('z轴');  % 加上坐标轴的标签 hidden off  % 可以看到背部的图像,不会遮挡(默认是看不到的) alpha(0.8)  % 设置透明度为0.8,这时候隐隐约约能看到(透明度介于0-1之间,越大表示越透明) n = 11;tem = linspace(0,5,n);  % 将[0,5]这个区间等分为n个点(等差数列的形式) axis vis3d % 冻结屏幕高宽比,使得一个三维对象的旋转不会改变坐标轴的刻度显示 %% meshc函数:除了mesh函数图形外,还在xy平面上绘制曲面的等高线meshc(x,y,z) %% meshz函数:除了mesh函数图形外,还在xy平面上绘制曲面的底座meshz(x,y,z)

surf 曲面图

[x,y] = meshgrid(linspace(0,5,11));% [x,y] = meshgrid([0:0.5:5]); % 或者直接写成[x,y] = meshgrid(0:0.5:5); subplot(1,2,1)  % subplot(m,n,index) title('mesh(x,y,z)') %% surfc函数:除了surf函数图形外,还在xy平面上绘制曲面的等高线surfc(x,y,z) %% surfl函数:加上了灯光效果,看起来自然点surfl(x,y,z) %% 设置色彩模式% shading 是用来处理色彩效果的,分以下三种:shading faceted % 是默认的模式 shading flat % 在faceted的基础上去掉图上的网格线shading interp % 在flat的基础上进行色彩的插值处理,使色彩平滑过渡

contour 等高线图

%% contour函数: 绘制等高线图 % 在x-y平面绘制等高线图,Matlab会自动选择等高线的层级contour(x,y,z)  % n是一个标量,Matlab会将等高线的层数设置为n,且会自动选择层所在的高度。contour(x,y,z,10)contour(x,y,z,5,'LineWidth',2)    % 设置线的宽度为2contour(x,y,z,5,'--')             % 设置等高线为虚线contour(x,y,z,5,'ShowText','on')  % 显示每一层的高度contour(x,y,z,5,'--','ShowText','on','LineWidth',2)  % 可以组合起来使用colorbar                          % 显示颜色栏,也可以手动插入  %% 得到固定的n个高度的等高线,将levels设置为n元行向量,其中向量中的值为高度值。maxz = max(max(z))minz = min(min(z))levels = linspace(minz,maxz,10)  % 从最小值到最大值,等分成10个点  contour(x,y,z,levels,'ShowText','on','LineWidth',1)  % 最小值或者最大值可能显示不出来,因为Matlab会帮我们自动调整  % 只想画出高度为0的单等高线怎么办?contour(x,y,z,[0 0],'ShowText','on')   %% contourf函数:和contour函数类似,只不过画出来的等高线图有颜色填充contourf(x,y,z,levels,'ShowText','on')   %% contour3函数:3维等高线图,等高线不再投影到x-y平面contour3(x,y,z,levels,'ShowText','on') 

符号函数

%% plot3函数 % t = 0: 0.1: 4*pi;   % 符号是t,t从0变动到4pi,间隔设置为0.1t = linspace(0,4*pi,100);  % 符号是t,t从0变动到4pi,等分为100个点x = sin(t)+1; % 利用t计算x的值y = cos(t);  % 利用t计算y的值z = t; % 利用t计算z的值plot3(x,y,z,'r--')   %% fplot3函数syms t  % 符号是tx = sin(t)+1;y = cos(t); z = t;fplot3(x,y,z) % 默认t的变化范围为[-5 5]fplot3(x,y,z,[0 4*pi]) % 修改t的变化范围为0至4pi  %% fmesh 三维网格图syms x y z=x^2+y^2;fmesh(z)             % 默认x的变化范围和y的变化范围都是[-5 5]fmesh(z,[-2 2 -4 4]) % 修改x的变化范围和y的变化范围分别为[-2 2]和[-4 4]axis vis3d           % 冻结屏幕高宽比,使得一个三维对象的旋转不会改变坐标轴的刻度显示axis equal           % 设置屏幕高宽比,使得每个坐标轴的具有均匀的刻度间隔fmesh(z,[-2 2 -4 4],'MeshDensity',11)   % 设置每个方向计算的点数  %% fsurf 三维曲面图 用法同fmesh  %% fcontour 绘制等高线syms x y z=x^2+y^2;fcontour(z)             % 默认x的变化范围和y的变化范围都是[-5 5]fcontour(z,[-2 2 -4 4]) % 修改x的变化范围和y的变化范围分别为[-2 2]和[-4 4]fcontour(z,'fill','on') % 在等高线线条间进行填充

隐函数

%% 在默认区间 [-5 5]上绘制 f(x,y,z) = 0 定义的三维隐函数f = @(x,y,z) x.^2 + y.^2 - z.^2;  % 函数句柄 这里要注意,要用点运算符fimplicit3(f) interval = [-5 5 -5 5 0 5];   % 指定范围fimplicit3(f,interval) fimplicit3(f,interval,'EdgeColor', 'none', 'FaceAlpha',0.5)  % 去掉边缘颜色,调整透明度

符号运算

% 符号矩阵syms alphaM = [cos(alpha)  -sin(alpha);       sin(alpha)  cos(alpha)] %% 简单运算syms a b c d e y = a + b% a + b x = c - d% c - d y1 = x*y% (a + b)*(c - d) y2 = y1/y% c - d y3 = y1^3% (a + b)^3*(c - d)^3 y4 = sqrt(y3)   % ((a + b)^3*(c - d)^3)^(1/2) y5 = exp(y4)% exp(((a + b)^3*(c - d)^3)^(1/2))
% 化简syms ay=(cot(a/2)-tan(a/2))*(1+tan(a)*tan(a/2))simplify(y)% 2/sin(a)  %% 因式分解factor(12) % 对常数进行因式分解 %      2     2     3syms m n xy = -24*m^2*x-16*n^2*xfactor(y)% [ -8, x, 3*m^2 + 2*n^2]  %% 多项式展开syms a xy = a*(x^2-a)^2+(x-2)expand(y)% a^3 - 2*a^2*x^2 + a*x^4 + x - 2  %% 合并syms x yz = (x+y)^2*y+5*y*x-2*x^3collect(z,x)% y*x^2 - 2*x^3 + (2*y^2 + 5*y)*x + y^3collect(z,y)% y^3 + 2*x*y^2 + (x^2 + 5*x)*y - 2*x^3 %% 计算分子与分母% [z1,z2] = numden(2.5)  % 会报错,因为numden的输入变量不能是数值,只能是符号变量% ans = sym(2.5);  % sym函数可以将数值2.5转换为符号[z1,z2] = numden(sym(2.5)) % 对常数计算分子与分母% z1 = 5% z2 = 2syms x yz = 1/x*y+x/(x^2-2*y)[z1,z2] = numden(z)  %z1分子,z2分母% z1 = - x^2*y - x^2 + 2*y^2% z2 = x*(- x^2 + 2*y)

求导

% 一元函数的导数syms xy = x^4-5*x^2+6diff(y) %求一阶导数% 4*x^3 - 10*xdiff(y,2) %求二阶导数% 12*x^2 - 10  % 多元函数的导数syms x1 x2 x3y1 = x1^5*x2+x2*x3-x1^2*x3py1 = diff(y1,x1,1) % 对x1求一阶偏导% 5*x2*x1^4 - 2*x3*x1py2 = diff(y1,x1,2) % 对x1求二阶偏导% 20*x2*x1^3 - 2*x3py3 = diff(y1,x1,x2) % 先对x1求偏导,再对x2求偏导% 5*x1^4  %% 注意,如果diff函数作用的对象不是符号函数,而是矩阵,那么对应的功能是求差分。A=[4 5 6 3 2 1];diff(A)  % 求向量A的一阶差分     1     1    -3    -1    -1diff(A,2)  % 在一阶差分的基础上再差分一次     0    -4     2     0 A=[4 5 6;      7 4 2;     5 6 2] A1=diff(A)  % 下一行减去上一行求一阶差分%      3    -1    -4%     -2     2     0 A2=diff(A,2) % 下一行减去上一行求二阶差分(在一阶差分的基础上再差分一次)%     -5     3     4 A3=diff(A,2,1) % 最后面的1表示在行上进行差分(在列的方向上进行差分)%     -5     3     4 A4=diff(A,1,2)  % 后一列减去前一列求一阶差分, 最后面的2表示在列上进行差分(在行的方向上进行差分)%      1     1%     -3    -2%      1    -4 A4=diff(A,2,2) % 后一列减去前一列求二阶差分%      0%      1%     -5

不定积分、定积分

%% 不定积分(求导数的原函数)syms xy = x^2int(y,x)% x^3/3   %% 定积分syms xy = sin(x)int(y,x,0,pi/2) % 上下界% 1  y = (sin(x))^2 / x^2b=int(y,x,0,+inf)  % 在数学分析中,给定函数的定积分的计算不总是可行的,许多定积分不能用已知的积分公式得到精确值。% 所以用数值积分:用于求定积分的近似值y = @(x) 1 ./ exp(x) .* log(x+2.*x.^2+sin(x))  % 注意,写成函数句柄时,要用点乘或者点除integral(y,0,4)

求解方程和方程组

syms u v aeqn = [2*u + v == a, u - v == 1];answ = solve(eqn, [u, v])answ.uansw.v[answ_u, answ_v] = solve(eqn, [u, v])


生成随机数

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 输出在[a,b]之间均匀分布的随机数组成的m行n列的矩阵unifrnd(a,b,m,n)% 等价于:a + rand(m,n)*(b-a) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 产生由在[0,1]之间均匀分布的随机数组成的m行n列的矩阵rand(m,n)% 方阵rand(3) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%randi([1,5],5,8)  %在区间[1,5]内随机取出大小为5*8的整数矩阵randi([1,5])      %在区间[1,5]内随机取出1个整数 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%normrnd(10,2)  % 均值为10 标准差为2(方差为4)的正态分布随机数% exprnd(M)表示生成一个均值为M的指数分布随机数(其对应的参数为1/M)exprnd(5)  % 均值为5的指数分布随机数(对应的参数为0.2) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%randperm(5)  % 生成1-5组成的一个随机序列(类似于洗牌的操作) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 以一定的概率产生随机数  randsrc(m,n,[alphabet; prob])% m和n表示生成的随机数矩阵的行数和列数% alphabet表示需要产生的随机数的数字,用一个行向量表示% prob表示这些数字出现的概率大小,用一个行向量表示,向量长度和alphabet向量要完全相同, 且这些概率的和要为1% 比如:要产生1、4、 6这三个数。它们分别出现的概率为 0.1、0.2、0.7,如何设计程序使得按照这个概率产生10个随机数呢?alphabet = [1 4 6]; prob = [0.1 0.2 0.7];randsrc(10,1,[alphabet; prob])

概率统计计算

%% 第一步:对数据x标准化为XX=zscore(x);   % matlab内置的标准化函数(x-mean(x))/std(x) %% 第二步:计算样本协方差矩阵R = cov(X); %% 注意:以上两步可合并为下面一步:直接计算样本相关系数矩阵R = corrcoef(x);disp('样本相关系数矩阵为:')disp(R) %% 第三步:计算R的特征值和特征向量% 注意:R是半正定矩阵,所以其特征值不为负数% R同时是对称矩阵,Matlab计算对称矩阵时,会将特征值按照从小到大排列[V,D] = eig(R);  % V 特征向量矩阵 D 特征值构成的对角矩阵 cum_contribution_rate = cumsum(lambda)/ sum(lambda);   % 主成分分析中计算累计贡献率 cumsum是求累加值的函数


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空