MATLAB 语言程序设计基础(1)
- 格式:docx
- 大小:39.59 KB
- 文档页数:41
MATAB程序设计基础重要基础知识点总结(全)MATAB是一种高级的数值计算和科学计算软件,具备强大的矩阵运算能力。
以下是MATLAB的重要基础知识点:一、变量和数据类型了解如何定义变量、使用不同的数据类型(例如数值型、字符串型、逻辑型)以及它们之间的转换。
1.数值型数据类型包括整数(integers)、浮点数(floats)和复数(complex numbers)。
可以使用不同的精度和符号位来定义这些数据类型。
2.字符串数据类型表示一个或多个字符组成的文本。
字符串在MATLAB中用单引号或双引号括起来,例如'hello' 或"world"。
3.逻辑型数据类型只能取两个值之一,即true(真)或false(假)。
在MATLAB中,逻辑值通常用于控制流程和条件判断。
4.矩阵和数组型数据类型MATLAB中最基本的数据结构是矩阵和数组。
通过向量、矩阵和多维数组来表示和操作数据。
可以使用预定义的函数或运算符来创建、访问和处理这些数据类型。
5.结构体数据类型可以用于将不同类型的数据组合在一起。
结构体可以由不同类型的字段组成,每个字段都有自己的名称和值。
6.元胞数据类型可以容纳不同类型的元素,并且每个元素可以是不同的大小和形状。
元胞数组在MATLAB中常用于存储和传递异构数据。
7.函数和类数据类型MATLAB中还可以定义自己的函数和类,这些数据类型可以对数据进行封装和操作。
二、数组和矩阵操作掌握创建数组和矩阵的方法,并了解常用的矩阵运算,如加法、减法、点乘、叉乘等。
创建数组和矩阵:可以使用方括号[] 或函数来创建数组和矩阵。
例如,a = [1, 2, 3] 可以创建一个包含整数1、2 和 3 的行向量;b = [4; 5; 6] 可以创建一个包含整数4、5 和 6 的列向量;c = [1, 2; 3, 4] 可以创建一个2x2 的矩阵。
访问数组和矩阵元素:可以使用下标(索引)来访问数组和矩阵中的元素。
(Ⅰ)基础篇第一章 Matlab语言概述§1.语言特点MATLAB是Mathworks公司于20世纪80年代推出的数值计算软件。
得到了广泛的应用。
MATLAB的全称是Mateix Laboratory,意思是矩阵实验室。
它是以矩阵运算为基础的新一代程序语言。
MATLAB是集数学运算、图形处理、程序设计和系统建模为一体的著名编程语言软件,它具有功能强大、使用简单等优点,是进行科学研究和工程实践的有力工具。
与Fortran和C相比,MATLAB语句更简洁、明了,更加符合人们的思维习惯。
并且还具有良好的数据可视化功能。
MATLAB包括两部分:基本部分-主要指数据计算和可视化功能。
扩展部分-主要指工具箱。
§2 基本操作和简单语句输入1. 简单语句输入(简单计算器用法)例1:计算a⨯y÷⨯=(a = 2,b =3,c = 5 )+acbb[程序] 在命令窗口输入>> a=2;b=3;c=5;>> y=a*b+c*b/a 回车[输出] y =13.5000例2:计算64(tan3⨯+45)/2760cos[程序] >> (tan(pi/4)+cos(pi/3))*27^(1/3)/sqrt(64)ans =0.56252. 变量表达式数值(1)变量* matlab语句一般形式为:变量=表达式(或数),若变量和“=”省略,输出时自动建立“ans”默认变量。
* 对大小写敏感,如sqrt(平方根)对,而SQRT,Sqrt全错。
* 变量名第一个字符必须是英文字母,最多可包含31个字符,(含英文、数字、下连符)。
不得包含空格和标点。
* 系统遇到一个新变量名时,它会自动生成变量,若该变量早已存在,系统会自动更新内容。
表1-1 默认预定义变量(永久变量)例3:无穷大的使用>> x =1/0Warning: Divide by zero.x =Inf* 在MATLAB中这样的操作不会引起程序执行中断,只是在给出警告信息的同时,用一个特殊的符号Inf来表示。
MATLAB程序设计基础MATLAB是一款由MathWorks公司开发的科学计算与数据可视化软件,广泛应用于工程学、数学、物理学、生物学以及金融等领域。
本文将介绍MATLAB的程序设计基础,包括变量和数据类型、运算符、控制流和函数等重要概念。
一、变量和数据类型在MATLAB中,变量是用来存储和处理数据的容器。
变量可以是不同的数据类型,包括整数、浮点数、字符、逻辑值等。
我们可以使用等号将数值或表达式赋给一个变量。
例如,可以将整数10赋给变量x:x=10;在MATLAB中,数据类型是动态的,这意味着变量的数据类型可以根据上下文自动更改。
例如,如果将浮点数赋给变量x,其数据类型将从整数变为浮点数。
二、运算符MATLAB提供了各种运算符用于数据处理和计算。
常用的数学运算符包括加法(+)、减法(-)、乘法(*)、除法(/)等。
此外,它还提供了幂运算符(^)和取余运算符(mod)等。
运算符在MATLAB中与其他高级编程语言相似。
三、控制流在程序设计中,控制流用于确定程序执行的顺序。
MATLAB中有三种主要的控制流结构:顺序结构、条件结构和循环结构。
顺序结构是指按照编写顺序从上至下执行代码的方式。
条件结构是根据条件的真假来决定程序的执行路径。
在MATLAB中,常用的条件结构有if语句和switch语句。
例如,可以使用if语句判断一个数是否为正数:if x > 0disp('x is positive');elseif x < 0disp('x is negative');elsedisp('x is zero');end循环结构是重复执行一段代码直到满足特定条件为止。
在MATLAB中,常用的循环结构有for循环和while循环。
例如,可以使用for循环输出1到10之间的所有整数:for i = 1:10disp(i);end四、函数在MATLAB中,函数是一段执行特定任务并返回结果的代码。
%第二章MATLAB 语言程序设计基础% % MATLAB 基本命令简介% MATLAB 程序设计语言基础% 基本数学运算% MATLAB语言流程控制% MATLAB 函数的编写% 二维图形绘制% 三维图形绘制% 二维图形% 基本平面% plot% fplot%f(x)%fplot('tanh',[-2 2])% loglog%双对数图形% semilogx%x轴对数图形% semilogy%zoom%meshgrid% 特殊平面%polar%bar%barh%compass%comet%errorbar%feather%hist 二维直方图%histc 直方图记数%rose 角度直方图%stairs%stem 柄形图%stem3%pie 饼形图% 注释命令% grid% gtext% text% legend% title% xlabel,ylabel% 三维图形%% 三维曲线,面填色命令% comet3 三维彗星% fill3% 三维图形等高线%clabel 二维等高线图中添加高度标签% [x,y] = meshgrid(-2:.2:2);% z = x.*y.*exp(-x.^2-y.^2);% [C,h] = contour(x,y,z);% clabel(C,h);%contour%contourc 低级等高线图形计算命令。
计算等高线矩阵c %contour3 三维空间等高线图%contourf 填充二维等高线图%contour,contour3和contourf%pie3% 曲线与网格图%mesh%surf%surfc%surfl%waterfall% [X,Y,Z] = sphere(30);% %[X,Y,Z] = peaks(30);% waterfall(X,Y,Z)% surf(X,Y,Z)% cylinder% sphere% 其他表现形式% pcolor 伪彩色% quiver 矢量图或速度图% slice% axis% hidden 显示隐含线条% shading 颜色色调属性% caxis 颜色坐标轴刻度% [X,Y,Z] = peaks(30);% C = Z;% mesh(peaks)% hidden off% caxis([-1 1])% view% viewmtx 视点转换矩阵% surfnorm 显示三维曲面法线% [x,y,z] = cylinder(1:10);% surf(x,y,z)% figure% surfnorm(y,x,z)% axis([-12 12 -12 12 -0.1 1])% 通用函数% 图形对象句柄% figure% line% patch% surface% image% uicontrol% uimenu% 轴和控制命令% axes% cla% gca% % 图形句柄操作% gco 返回当前对象的句柄% get 获取对象属性% set% reset% delete% findobj%% % 图形窗口控制% subplot% hold% gcf% clf% close% newplot%% % 颜色与光照模式% % 颜色控制% colormap 设置或获取当前色图% bone 淡兰色的灰度刻度化的色图% cool 阴影的青色和品红的色图% copper 线性铜色色图% flag 红、白、兰、黑的色图% gray 线性灰度化的色图% hot 黑、红、黄、白的色图% hsv 色度-饱和度值的色图% jet% pink 带柔和阴影粉红色图% prism 三棱镜色图%% % 色图控制% brighten 增亮或变暗色图% colorbar 指定颜色刻度的颜色条% contrast 提高灰度色图的对比度% rgbplot 画出色图% diffuse 漫反射率% specular 镜面反射率% surfl 三维带光照模式的阴影图%循环结构%for i=V%%end% while()%% end%选择结构% if()%% elseif()%% else%% end% switch% case%% case%% otherwise%% end% try,% catch,% end%Matlab内部的每一个数据元素都是用双精度数(double)来表示和存储的。
%变量输出时用户可以用format命令设置或改变输出格式。
%符号型数值可采用变精度函数求值vpa(A), 或vpa (A,n)%find(), all(), any()%[s1,how]=simple(s) 化简并返回实际采用的化简方法其中,s为原始表达式,s1为化简后表达式,how为采用的化简方法。
%subs(B,old ,new)% function [d,e]=jia(m,n)% c=m+n;% d=m-n;% e=m*n;%% end% function A=myhilb(m,n)% %产生A=MYHILB(N,M)或A=MYHILB(N);% if nargin==1% m=n;% else% if nargin==0 | nargin>2% error('Wrong number of input arguments.'); % end% end%% A1=zeros(m,n);% for i=1: m% for j=1:n% A1(i,j)=1/(i+j-1);% end% end% if nargout>1% error('Too many output arguments.');% end% if nargout==1% A=A1;% else% if nargout==0% disp(A1);% end% end% function k=my_fact(n)% if nargin~=1, error('输入变量个数错误,只能有一个输入变量'); end % if nargout>1, error('输出变量个数过多'); end% if abs(n-floor(n))>eps | n<0 % 判定n 是否为整数% error('n 应该为非负整数');% end% if n>1 % 如果n>1, 进行递归调用% k=n*my_fact(n-1);% elseif any([0 1]==n) % 0!=1!=1% k=1;% end% %syms a b x y% %[x,y]=solve(a*x-b*y-1,a*x+b*y-5,x,y)% x=0:0.05:2*pi% y=sin(x)% %plot(x,y)% polar(x,y)% hold% stem(x,y)% A=[3 5 7 10];% x1=[1 2];% A(x1)% A=[3 5 7 10];% x1=[1 2];% A(x1)% x2=[true false true];% A(x2)% x3=[1.2 2.3];% A(x3)% function [m,s]=findsum( k) % s=0; m=0;% while (s<=k)% m=m+1;% s=s+m;% end%k=4,1;m1,s1;2,m2,s3;3,m3,s6% a=[1,2,8 ;1 2,4]% [X,Y,Z]=peaks(30);% surf(X,Y,Z)% axis([-3,3,-3,3,-10,10])% axis off;% shading interp;% colormap(hot);% m=moviein(20);% for i=1:20% view(-37.5+24*(i-1),30)% m(:,i)=getframe;% end% movie(m,2);% %syms a b x y% %[x,y]=solve(a*x-b*y-1,a*x+b*y-5,x,y) % x=0:0.05:2*pi% y=sin(x)% %plot(x,y)% polar(x,y)% hold% stem(x,y)% A=[3 5 7 10];% x1=[1 2];% A(x1)% A=[3 5 7 10];% x1=[1 2];% A(x1)% x2=[true false true];% A(x2)% x3=[1.2 2.3];% A(x3)% function [m,s]=findsum( k) % s=0; m=0;% while (s<=k)% m=m+1;% s=s+m;% end%k=4,1;m1,s1;2,m2,s3;3,m3,s6% a=[1,2,8 ;1 2,4]% [X,Y,Z]=peaks(30);% surf(X,Y,Z)% axis([-3,3,-3,3,-10,10])% axis off;% shading interp;% colormap(hot);% m=moviein(20);% for i=1:20% view(-37.5+24*(i-1),30)% m(:,i)=getframe;% end% movie(m,2);%第三章微积分问题的计算机求解%第三章,微积分问题的计算机求解%% 微积分问题的解析解% 函数的级数展开与级数求和问题求解% 数值微分% 数值积分问题% 曲线积分与曲面积分的计算%3.1 微积分问题的解析解%simple() pretty()%极限问题的解析解% 格式1:L= limit( fun, x, x0)% 格式2:L= limit( fun, x, x0, ‘left’或‘right’)% 格式:L1=limit(limit(f,x,x0),y,y0)或L1=limit(limit(f,y,y0), x,x0)% syms x a b;% f=x*(1+a/x)^x*sin(b/x);% L=limit(f,x,inf)% x=-0.1:0.001:0.1;% y=(exp(x.^3)-1)./(1-cos(sqrt(x-sin(x))));% plot(x,y,'-',0,12,'o')%函数导数的解析解%y=diff(fun,x) %求导数%y= diff(fun,x,n) %求n阶导数%f=diff(diff(f,x,m),y,n)%f=diff(diff(f,y,n),x,m)%J=jacobian(Y,X)%F=-diff(f,xj)/diff(f,xi) 隐函数求导% syms x;%f=sin(x)/(x^2+4*x+3);% f1=diff(f);% syms x y;% z=(x^2-2*x)*exp(-x^2-y^2-x*y);% zx=simple(diff(z,x))% zy=diff(z,y)% [x1,y1]=meshgrid(-3:.2:3,-2:.2:2);% z1=subs(z,{x,y},{x1,y1});% surf(x1,y1,z1), axis([-3 3 -2 2 -0.7 1.5])% contour(x1,y1,z1,30), hold on % 绘制等高线% zx1=subs(zx,{x,y},{x1,y1});% zy1=subs(zy,{x,y},{x1,y1});% quiver(x1,y1,zx1,zy1) % 绘制引力线%积分问题的解析解%F=int(fun,x)%I=int(f,x,a,b)%I=int(f,x,a,inf)% syms x; I1=int(exp(-x^2/2),x,0,1.5) %无解% >> vpa(I1,70)% >> I2=int(exp(-x^2/2),x,0,inf)%顺序的改变使化简结果不同于原函数,但其误差为0,表明二者实际完全一致。