ctrl a +i 代码格式化
fzero求非线性函数的根
arrayfun将函数应用于每个数组元素
format long长格式输出
format long g取消科学计数法
linspace
logspace
一、界面使用
1.创建matlab脚本
利用.m后缀的脚本文件(又称为m文件)编程:
点击MATLAB菜单栏:主页-一新建-一脚本,或者使用快捷键Ctrl+N
点击MATLAB菜单栏:编辑器一一保存,或者使用快捷键CtrI+S
点击MATLAB菜单栏:编辑器一一运行,或者使用快捷键F5
2.清空
清空工作区 :clear;
清空命令行窗口 :clc;
3.matlab文件管理
4.帮助系统
5.创建变量
whos 查看工作区中变量
%matlab中创建变量不需要声明 默认使用双精度浮点数
%创建变量后在命令窗口立即显示结果 并且在工作区添加变量
%不指定输出变量时 默认使用ans存储运算结果
%程序语句以分号结尾时 命令行窗口中不显示运算结果
%在命令行窗口中按回车可以运行程序
%命令行中若输入一条语句后换行但不想运行 用shift+enter
%命令行中允许一行输入多个语句 用,or;分隔
%快速回调之前使用过的语句可以用方向键上下键
%清除或不执行当前语句用esc键退出
%可以选中部分程序 按回车键直接运行这部分
%创建数组或矩阵用中括号括起数值
演示:
1.2/Matlab创建变量/非常适合小白从零学起_哔哩哔哩_bilibili
二、运算基础
tips:多行注释快捷键 ctrl+r (不过只能用在编辑区不能用在命令行)
多行解注释 ctrl+t
1.变量
在MATLAB中变量的命名应遵循如下规则:
变量名必须以字母开头,之后可以是任意的字母、数字或下划线_。
变量名区分字母的大小写,例如 a和 A代表不同的变量。
变量名不超过63个字符,第63个字符以后的字符将被忽略。
不能定义与MATLAB关键字同名的变量(例如if或end)。要获取关键字
的完整列表,请在命令行输入 iskeyword 并运行。![](https://i-blog.csdnimg.cn/direct/0b77f3bb9b0b4fc391a281b8e55dab2d.png)
特殊变量:ans、pi、inf/-inf(正负无穷)等
MATLAB 使用等号“="给变量赋值
tips:编辑器里语句后面如果带分号 运行结果不会在命令行中显示(工作区会显示 对应变量)
2.数据类型
数字:整数和浮点数
字符串和字符:分别用 “”和‘’括起来
矩阵:[]
3..基本运算符的使用
这里的逻辑值指0 1(在c中为bool类型)
三、矩阵基础
上一节补充:
对两个字符变量进行基本运算,其实运算的是字符的ascii码值
1.矩阵的创建
1.直接创建法
适用于矩阵中元素数量较少的情况。
输入矩阵时要以中括号[]作为标识符号,矩阵的所有元素必须都在中括号内。
矩阵的同行元素之间用空格或逗号分隔,行与行之间用分号或回车键分隔。
2.函数创建法
MATLAB提供的用来生成某些特定的矩阵的函数,常用函数:
第一组函数:zeros、ones 和eye。这三个函数分别用来创建全为0的矩阵、全为1
的矩阵和单位矩阵。
第二组函数:rand、randi和randn。这三个函数分别用来创建均匀分布的随机数、
均匀分布的随机整数和标准正态分布的随机数。
%函数创建法
a1=zeros(5) %生成全零方阵 5行5列
a2=zeros(3,4) %生成3行4列全零矩阵
b1=ones(5) %生成全1方阵 5行5列
b2=ones(3,4) %生成3行4列全1矩阵
c1=eye(5) %生成单位方阵 5行5列
c2=eye(3,4) %生成单位方阵 3行4列(这个确实能运行出来)
% %rand:创建均匀分布随机正数,1以内
%常用:rand(n),rand(m,n)
a1=rand(100) %5x5的随机数矩阵
a2=rand(3,4) %3x4的随机数矩阵
%randi:均匀分布的随机整数
%常用:randi([imin,imax],m,n) 范围上下限 m行n列
b1=randi([1,100],4) %4x4方阵
b2=randi([1,100],3,4) %3x4矩阵
%randn:标准正态分布的随机数以0为中心 正负均有
%常用:randn(n),randn(m,n)
c1=randn(100)
c2=randn(3,4)
非常建议去看帮助文档
3.导入本地文件数据(详细见后)
MATLAB可读取本地的文件,支持的常见格式如下:
》txt、.dat或.csv (适用于带分隔符的文本文件)
》xls、.xlsb、.xlsm、.xlsx、.xltm、.xltx或.ods(适用于电子表格文件)
2.矩阵元素 的修改删除
矩阵元素的修改:
直接利用等号赋值的方法对矩阵中引用位置的元素进行修改
A=[1:4;2:5;3:6;]
%1:4表示中间间隔1从1开始生成到4
%也可以两个冒号三个数据,首末数据是开头和结尾,中间数据是步长(间隔数据差值)
A(2,3)=10;%索引法把第二行第三列改成10
A(2,:)=10;%整个第二行都变成10
A([1,3],[2,3])=10;%分别把第一行和第三行的第二列第三列元素改为10
使用线性索引(单下标的索引)的方式对矩阵的元素进行修改
![](https://i-blog.csdnimg.cn/direct/07723ba8b1cc4384be686f2d374cd701.png)
注意:
如果你在赋值时将一个或多个元素置于矩阵现有的行和列索引的边界
之外,则会将矩阵的大小进行拓展,MATLAB会将没有赋值的位置的元素自
动用0填充,使其保持为完整的矩形。
矩阵元素的删除
1.删除整行/整列
》如果我们将等号右侧变成空向量[],则可以删除对应位置的元素。需要注意的是,通常只能删除矩阵的整行或者整列,否则会报错。
2.线性索引
》也可以通过线性索引来删除矩阵的元素。使用线性索引可以删除任意位置的元素,不需要删除矩阵的一整行或者一整列。
(up的版本会把删除后的矩阵元素放进向量里 但是我的版本还是矩阵 嘿嘿)
3.矩阵的拼接重构重排
1.拼接
横向拼接(行数相同)
最后结果都是E
纵向拼接(列数相同)
2.重排
sort 函数:
对向量或者矩阵进行排序,sort(A,dim),在最后面加一个输入参
数'descend',变成从大到小的降序排列
dim =1时,沿着行方向(从上至下)对矩阵的每一列升序排列
dim =2时,沿着列方向(从左至右)对矩阵的每一行升序排列
sortrows函数:
基于矩阵的某一列对矩阵进行排序,同一行的元素不会改变。
sortrws(A,列),在最后面加一个输入参数'descend',变成从大到小的降
序排列
sortrws(A,[1,2]):先按第一列升序 当第一列包含重复的元素
时,sortrows 会根据下一列中的值进行排序,并对后续的相等值重复此行为。
3.重构
reshape函数:
更改矩阵的形状,reshape(A, m, n)或者 reshape(A,[m,n])
4.矩阵运算
1.常见矩阵函数——善用帮助文档
函数名 | 作用 |
sum | 求和 |
prod | 求乘积函数(product) |
cumsum | 计算累积和(cumulativesum) |
diff | 计算差分(difference) |
mean | 计算平均值 |
median | 计算中位数 |
var | 计算方差(variance) |
std | 计算标准差(standarddeviation) |
min | 求最小值(minimumvalue) |
max | 求最大值(maximumvalue) |
mode | 计算众数 |
sum:
prod
cumsum
diff
mean
median
var
std
min
max
mode
mod 等于%取余
2.算数运算
矩阵加减
五种算术运算兼容模式(见表格)
核心:按对应位置的元素运算
矩阵乘除乘方
* 矩阵相乘
.* 矩阵中对应元素相乘(此时矩阵大小只需满足五种兼容模式)
/ 右除(用于解方程组)
\ 左除(用于解方程组)
./ 对应元素相除(此时矩阵大小只需满足五种兼容模式)
^ 矩阵的幂运算 矩阵得是方阵 另一边是个常数=连乘
.^ 对应元素的乘方 (此时矩阵大小只需满足五种兼容模式)
矩阵转置
‘ 转置后会把矩阵中的复数变为共轭复数
.' 转置后复数不变
一般来说矩阵中均为实数 效果相同
关系运算
条件也是符合五种兼容模式
== 等于
~= 不等于
> 大于
>= 大于等于
< 小于
<= 小于等于
关系运算符可以用来比较两个数组中元素的关系,如果比较的结果为真,则MATLAB会返回逻辑值1;如果结果为假,则会返回逻辑值0。(返回结果其实是一个数组 对应位置元素相同则为1 否则为0)
四、逻辑基础
1.逻辑运算符
& | ~ xor
MATLAB推荐大家直接使用运算符进行计算,因此&、和~这三个符号的功能
大家要牢记。以“&”为例:
(1)针对矩阵运算时:“逻辑与&”是对A和B进行计算的,计算时会比较
A和B对应位置的元素。需要符合算术运算中介绍的五种兼容模式即可。
(2)“逻辑与&”不仅可以作用在逻辑值0和1上,还可以用于普通的数值
上,这时候,MATLAB会将非零数值视为逻辑1,将数值零视为逻辑0进行
运算。
(3)“逻辑与&”也可以进行连续运算,例如1&2&3。
(4)为避免运算优先级的问题,直接使用小括号来指定计算顺序。
例题:
随机生成20名同学的单科成绩(假设成绩为满分100分的整数制),现
需要从中找到成绩等级为良(成绩在区间[60,80)内)的同学。如果要找出[0,60)
U[80,100]分的同学呢?
【60,80】:
%逻辑运算符可连续运算 关系运符不可
A=randi([0,100],1,20)
res=(A>=60) &(A<80)
[0,60)U[80,100]:
res2=~res
|| &&
(1)&&和只能对标量(只有一个元素)进行逻辑运算,不能对有多个元素的向量或者矩阵进行运算,而&和|可以。
(2)&&和川进行逻辑运算时具有短路功能,可以提高运行效率:
计算A&&B时,如果A为逻辑0,则B不会被判断,因为最后的结果一定是逻辑0;
计算AIIB时,如果A为逻辑1,则B不会被判断,因为最后的结果一定是逻辑 1。
2.all、any、find函数
all any
all函数和 any 函数的用法类似,以 all 函数为例,它的用法如下:
如果A是一个矩阵,那么all(A,dim)沿着dim维来判断元素是否全为非零值。
dim等于1时沿着行方向来判断每一列是否全为非零值,并将结果返回为一个全为逻辑值的行向量,可以直接简写成 all(A)。
dim等于2时表示沿着列方向判断每一行是否全为非零值,并将结果返回为一个全为逻辑值的列向量。
例题:请随机生成一个100行3列的矩阵,用来记录学生的考试成绩:矩阵每
一行代表一名同学,每一列代表一门科目的成绩,矩阵中的每个元素都是区间
[50,100]内的随机整数。
(1)请指出哪些同学挂科了,至少有一门科目没过60分就算挂科。要求返回
一个包含100个元素的逻辑向量,元素为逻辑值1的位置对应的同学挂科了。
any(A<60,2) %最后得到列向量
(2)这三门科目中是否存在科目没有人挂科(所有同学的这一门科目的成绩都
高于60分)。要求返回一个包含3个元素的逻辑向量,元素为逻辑1的位
置对应的科目表示没有人挂科。
all(A>=60,1)
find
v是把里面所有非零值提出来做一个数组
练习
请随机生成一个100行3列的矩阵,用来记录学生的考试成绩:矩阵每一行代
表一名同学,每一列代表一门科目的成绩,矩阵中的每个元素都是区间[50,100]
内的随机整数。
(1)找出恰好挂了两门科目的同学的编号。
(2)找到总分超过260分的同学的编号。
res1=find(sum(A<60,2)==2) %得到线性索引值
res2=find(sum(A,2)>260)
五、结构基础
1.条件结构
if-elseif-else-end
例题
if和elseif后面的表达式也支持其他运算,例如算术运算,其计算结果可以是一
个数值常数,不一定非要是逻辑值1或者0。如果 if和elseif后面表达式的计
算结果为非零数值,就会被当成逻辑值1;如果计算结果为数值零,则会被当
成逻辑值0.
如果后面是个矩阵的话 只有矩阵中所有元素均不为0才会被看做逻辑值1
if的嵌套
每个if都要有对应的end
%%
clear;
clc;
a=10;
b=12;
c=8;
if(a>b)if(a>c)res=a;elseres=c;end
elseif(b>c)res=b;elseres=c;end
end
switch-case-owtherwise-end
例题
a=randi(4)
switch acase 1disp("spring");case 2disp("spring");case 3disp("autumn");otherwisedisp("winter");
end
2.循环结构
for-end
%%
clear
clc % for i=1:5
% disp(i+2)
% end%遍历A矩阵中每一列
A=randi([-3,3],2,3)
for(i=A)i
end
for循环次数取决于向量或矩阵中有多少列
例题
例题:不使用sum 函数,计算行向量x中所有元素的和。
%1-6的加和
x=1:6 %可以这么表示
res=0
for i=xres=res+i
end
例题:计算从公元1年到公元9999年间,有多少个闰年。闰年的判读条件是年
份能够被4整除,但不能被100整除,或者年份能够被400整除。
%%
clear;
clc
num=0;
for i=1:9999if(mod(i,4)==0) && (mod(i,100)~=0) || (mod(i,400)==0)num=num+1;end
end
num
while-end
例题
例题:根据斐波那契数列的递推公式,求数列中第一个大于99999的元素。
F(1)=1,F(2)=1
F(n)=F(n-1)+F(n-2),n ≥3
%%
f(1)=1;
f(2)=1;
n=2;
while f(n)<99999n=n+1;f(n)=f(n-1)+f(n-2);
end
n
一个无限循环,在命令行窗口中按下快捷键Ctr+C来中断程序的运行。
while 后面表达式的计算结果不一定非得是逻辑值 1或0。如果表达式的计算结果是一个数值常数,则只有当这个常数为非零值时循环才会进行,
关键字:break和continue
break和continue只能与for循环或while循环一同使用
break关键字用于终止执行for或while循环。实际使用中,当满足某个
条件时,我们会使用break立即退出循环。这在找到所需结果后立即退
出循环的场景非常有用。
continue关键字用于跳过循环的当前迭代,然后继续下一次迭代。实际
使用中,当满足某个条件时,continue将跳过当前循环迭代的剩余部分
然后继续进行下一次迭代。这对于在某些情况下跳过特定的迭代非常
用,而不必完全退出循环。
例题
例题:输出1至10中所有的奇数。
for i=1:10if mod(i,2)==0continue;elsedisp(i)end
end
例题:质数(Prime number),又称素数,指在大于1的自然数中,除了1和
该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个
正因数的数)。给定任意一个大于100的自然数n(例如n=135389),请判断
n是否为质数。
%%
clear
clc
n=135389;
flag=0;
for i=2:n-1if mod(n,i)==0 %不是质数flag=1;break;end
end
if(flag==1)disp("是质数")
elsedisp("不是")
若存在循环的嵌套,break和continue仅在调用它的循环主体中起作用。即break仅从它所发生的循环中退出,continue仅跳过它所发生的循环体内的剩余语句。
练习
步骤1:选择函数零点所在的初始区间[a,b],确保f(a)×f(b)<0。
步骤2:计算区间的中点c=(α + b)/2,并计算函数在c处的值f(c)。
步骤 3:如果f(c)的值恰好等于零,或者f(c)的绝对值小于某个给定的误差阈值,那么c
就可以当成零点,迭代结束。
步骤4:如果f(c)与零的差异较大,那么需要根据f(c)的正负号,将原来包含零点的区间
[a,b]更换为[α,c]或[c,b],确保零点仍然在新的区间内(例如:f(a)×f(c)<0则更换为[a,c])。
步骤5:重复步骤2到4,直到找到零点或者达到所需的精度停止迭代。
下面看一个具体的题目:函数f(x)=x²-8x²+x-5,f(x)在区间[6,10]严格递增且
f(6)<0,f(10)>0,请用二分搜索法求零点x。(f(xo)和0的误差控制在1e-8内即可)。
%%
clear
clc
a=6;b=10;
eps=1e-8; %误差阈值
while 1c=(a+b)/2;fc=c^3-8*c^2+c-5;if abs(fc)<epsbreakendfa=a^3-8*a^2+a-5;if fa*fc<0b=c;elsea=c;end
end
c
六、自定义函数
m文件定义函数
函数基本结构
函数调用
定义完的函数保存为同函数名的m文件,放置在Matlab的当前路径之下,然后
就和使用Matlab自带的函数一样,直接在命令窗口或程序代码中使用该函数就
是调用它了。
函数调用的一般格式为:
[输出实参表]=函数名(输入实参表)
函数中遇return语句时,将退出函数体,此函数调用结束;
函数体里面也可以定义一个或几个函数,称为子函数;注意:子函数只能存在于主函数体内,不独立存在;子函数在主函数体内的位置可以任意,不影响使用;子函数只能被主函数以及其他位于同一主函数体下的子函数调用;
在调用函数时,Matlab用两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数。
写完的.m函数及调用:
function[max,min]=max_min_values(x)
%max 和min表示返回值
%max_min_values是函数名也得是.m文件的名字
% X是输入变量
max=subfunc_max(x);
min=subfunc_min(x);
%subfunc是自己定义的两个函数
function res=subfunc_max(x)
x1=sort(X,'desend'); %对向量x进行重排(从大到小)得到x1
res=x1(1);
endfunction res=subfunc_min(x)
x2=sort(X); %对向量x进行重排(升序)得到x2
res=x2(1);
endend
clear
clc
X=1:20;
[max,min]=max_min_values(X);
max
min
匿名函数
匿名函数是不存储在程序文件中,数据类型是function_handle的变量相关的函
数。代替“将函数编写为单独的㎡-文件”,并且效率比更高。
基本格式:
f=@(参数1,参数2,..)函数表达式
双层匿名函数
练习
这个解答很复杂 没听懂
%%
clear
clc
f=@(a)@(x)exp(x)+x^a+x^sqrt(x)-100;
A=0:0.1:2;x=@(a)fzero(f(a),4); %x(a)
X=@(A)arrayfun(@(a) x(a),A);
Y=X(A)
七、常用函数
abs取绝对值
mod取余
sqrt开方
exp e为底指数
log 实际上是ln
log2 log10
round
三角学 (弧度单位和度单位所用函数不一样)
isempty函数
如果 A为空数组[],isempty(A)返回逻辑值 1(true),否则返回逻辑值0
(false)。length(A)==0 的返回结果和 isempty(A)的返回结果一样,MATLAB 推荐大家使用后者判断A是否为空数组[],后者的运行效率更高。
例题:判断常数×是否是数组A中的某个元素,如果是则返回逻辑值1,不是则返回逻辑值0。
%%
clear
clc
A=[1:9];
x=10;
res=~isempty(find(A==x))
meshgrid函数
%%
x=0:4;
y=0:5;
[xx,yy]=meshgrid(x,y)
%在二维平面上计算二维函数x^2+y^2的值
z=xx.^2+yy.^2
rng函数
rng函数可用来设置随机数种子,这样能生成可重复的随机数。
使用随机数生成函数(例如 rand,randi等)之前,使用rng(seed)命令设置随机数种
子,这样能保证生成的随机数被固定下来。设置不同的随机数种子生成的随机
数通常都不相同。
拓展:每次重新启动MATLAB时,随机数生成器均复位到相同的状态,这样使
用生成随机数的命令会返回相同的结果。我们可以使用rng(shuffle")命令,它
可以根据当前的时间使用不同的种子重新设定生成器的种子,这样能避免重复
生成相同的随机数。
ismember函数
八、特殊函数(帮助中心直接搜即可)
特殊函数是一组在实际应用中经常出现的著名数学函数。可以用它们来计算贝
塞尔函数、beta函数、gamma函数、误差函数、椭圆积分等。
函数的详细信息:NISTDigitalLibraryofMathematicalFunctions
九、二维图形绘制
基本绘图函数
plot函数
plot(x,y)
创建Y中数据对X中对应值的二维线图。
要绘制由线段连接的一组坐标,请将X和Y指定为相同长度的向量。
要在同一组坐标区上绘制多组坐标,请将X或Y中的至少一个指定为矩阵。
%当X和Y为矩阵时
t=0:0.01:2*pi; %中间的步长大小会影响plot函数的光滑度
%x为n行三列矩阵 其中每个元素均为t
t=t.';%将t转置为列向量
%因为plot(x,y)当xy为同样大小矩阵时 以x和y他们对应的列元素
%分别为横纵坐标绘制曲线
%所以我想让我的x y矩阵均为n行3列大小
%最终会得到三条曲线(曲线条数==列数)
x=[t,t,t];
y=[sin(t),sin(2*t),sin(0.5*t)];
plot(x,y);
plot(X,Y,LineSpec)
使用指定的线型、标记和颜色创建绘图。
plot(X1,Y1,...,Xn,Yn)
在同一组坐标轴上绘制多对X和Y坐标。此语法可替代将坐标指定为矩阵的形式。
补充函数:linspace
%%
%plot(X1,Y1,...,Xn,Yn)x1=linspace(0,2*pi,10);
x2=linspace(0,2*pi,20);
x3=linspace(0,2*pi,200);
y1=sin(x1);
y2=sin(x2)+2;
y3=sin(x3)+4;
plot(x1,y1,x2,y2,x3,y3);
plot(x1,Y1,LineSpec1,..,Xn,Yn,LineSpecn)
可为每个 x-y 对组指定特定的线型、标记和颜色。您可以对某些x-y对组指定LineSpec,而对其他对组省略它。例如,plot(x1,Y1,"o",x2,Y2)对第-一个x-y对组指定标记,但没有对第二个对组指定标记。
fplot函数
plot不知道函数表达式 描点且点与点之间由折线连接 fplot能克服此缺点
fplot(f)
在默认区间[-55](对于×)绘制由函数y=f(x)定义的曲线。
fplot(f,xinterval)
将在指定区间绘图。将区间指定为[xminxmax]形式的二元素向量。
%%
clear
clc
%fplot(f,xinterval)
fplot(@(x)sin(1./x),[0,0.2])
%x是向量用点除
fplot(funx,funy)
在默认区间[-5,5](对于t)绘制由×=funx(t)和y=funy(t)定义的曲线。
fplot(funx,funy,tinterval)
将在指定区间绘图。将区间指定为[tmintmax]形式的二元素向量。
fplot(__,LineSpec)
指定线型、标记符号和线条颜色。例如,‘-r'绘制一根红色线条。在上述
语法中的任何输入参数组合后使用此选项。
对数坐标图semilogx(X,Y)
在×轴上使用以10为底的对数刻度、在y轴上使用线性刻度来绘制×和y坐标。
·要绘制由线段连接的一组坐标,请将×和Y指定为相同长度的向量。
·要在同一组坐标区上绘制多组坐标,请将×或Y中的至少一个指定为矩阵。
semilogx(x,Y,LineSpec)使用指定的线型、标记和颜色创建绘图。
极坐标图
polarplot(theta,rho)在极坐标中绘制线条,由theta表示弧度角,rho表示每个点的半径值。
输入必须为长度相等的向量或大小相等的矩阵。如果输入为矩阵,polarplot将绘制rho的列对
theta的列的图。也可以一个输入为向量,另一个为矩阵,但向量的长度必须与矩阵的一个维度相
等。
polarplot(theta,rho,LineSpec)设置线条的线型、标记符号和颜色。
条形图
bar(y)创建一个条形图,y中的每个元素对应一个条形。
·要绘制单个条形序列,请将y指定为长度为m的向量。这些条形沿×轴从1到m依次放置。
·要绘制多个条形序列,请将y指定为矩阵,每个序列对应一列。
bar(x,y)在×指定的位置绘制条形。
直方图
histogram(x)基于×创建直方图。histogram函数使用自动分bin算法,然后返回均匀宽度
的bin,这些bin可涵盖×中的元素范围并显示分布的基本形状。histogram将bin显示为矩
形条,这样每个矩形的高度就表示bin中的元素数量。
histogram(X,nbins)指定bin的数量。
例题:对分类为25个等间距bin的1,000个随机数绘制直方图。求bin计数。
饼状图
散点图
矢量类图形
图形属性设置
线型、标记和颜色
指定为包含符号的字符串标量或字符向量。符号可以按任意顺序显示。例"--
or”是带有圆形标记的红色虚线。
不需要同时指定所有三个特征(线型、标记和颜色)。例如,如果忽略线型,
只指定标记,则绘图只显示标记,不显示线条。
线形
标记
颜色
图形标注
(1)title(图形标题)
(2)xlabel(x轴说明)
(3)ylabel(y轴说明)
(4)text(x,y,图形说明)
(5) legend(图例1,图例2,..)
坐标控制
(1)axis函数
axis([xmin,xmax,ymin,ymax,zmin,zmax])指定当前坐标区的范围。
axis的其他用法
-axis equal:横纵坐标轴采取等长刻度
-axis square:产生正方形坐标系(默认为矩形)
-axis auto:使用默认设置
-axis off:取消坐标轴
-axis on:显示坐标轴
(2)给坐标系加网格和边框
grid on:控制显示网格线
grid off:控制不显示网格线
grid:用于在两种状态之间进行切换
程序中没有grid命令,默认是无网格线
十、三维图形绘制
三维曲线
plot3和fplot3
plot3(x,y,z)
例题:绘制空间的螺旋线,其参数方程为:
x=sint+tcost,
y=cost-tsint,
z=t
plot3(x1,yl,z1,x2,y2,z2,..,xn,yn,zn)
对于plot3函数来讲,它的参数x,y,z不止可以是一维数组
参数x、y、z是同型矩阵时,以x、y、z对应列元素绘制曲线,曲线条数等于
矩阵列数。
参数x、y、z中有向量,也有矩阵时,向量的长度与矩阵相符。
fplot3(funx,funy,funz,tlims)
funx、funy、funz代表定义曲线x、y、z坐标的函数,通常采用函数句柄的形式。
tlims为参数函数自变量的取值范围,用二元向量[tmin,tmax]描述,默认为[-5,5],
与fplot是几乎完全一致的。