MATLAB软件的基本命令
1.1算术运算
例1
>> 3*(5-2)+4^(6-3)/2
ans =
41
例2
>> 2^(1/2)
ans =
1.4142
例3
>> 1/3+pi
ans =
3.4749
例4
>> 2^100
ans =
1.2677e+30
1.2 函数
常用的函数
例5
>> sin(pi/6)
ans =
0.5000
例6
>> sqrt(3.3+1.5i)
ans =
1.8608 + 0.4031i
例7
>> rand
ans =
0.8147
例8
>> rand('seed',45) %rand以45为种子产生随机数
>> rand
ans =
0.0809
2.3 赋值与函数定义
例9
>> x=1
x =
1
例10
>> a=1;b=2;c=3
c =
3
例11
>> d=a+b*c
d =
7
例12
>> f=inline('x^2+y^2');f(1,2)
ans =
5
2.4 逻辑运算
1.关系运算
表0.2
例13
>> 3>=2
ans =
1
MATLAB中一般不适用连续的关系运算符.
例14
>> -3<-2<-1
ans =
0
2.逻辑运算
表0.3
例15
>> (5.8>4.1)&~(3.2==2.0)
ans =
1
3.逻辑判断命令
例16
>> x=isprime(2),y=isprime(4)
x =
1
y =
0
2.5 矩阵与向量
1.向量与矩阵的定义
(1)直接定义
例17
>> a=[1,2,3;4,5,6;7,8,10]
a =
1 2 3
4 5 6
7 8 10
>> x=[2,3]
x =
2 3
>> y=[4;5]
y =
4
5
(2)向量的冒号定义
例18
>> z=12:-3:1
z =
12 9 6 3
(3)语句定义
例19
>> diag([2,6])
ans =
2 0
0 6
2.矩阵的元素操作
MATLAB利用下标访问矩阵元素
例20
>> a=[1,2,3;4,5,6;7,8,10];
b1=a(3,1)
b2=a([1,3],[1,2])
b3=a(end,:)
b4=a(7)
a(:,4)=[3,2,1]
b5=reshape(a,2,6)
c=find(b3==8)
b1 =
7
b2 =
1 2
7 8
b3 =
7 8 10
b4 =
3
a =
1 2 3 3
4 5 6 2
7 8 10 1
b5 =
1 7 5 3 10 2
4 2 8 6 3 1
c =
2
3.矩阵的基本运算
矩阵的加减法是对相同维数的矩阵的对应元素进行加减,与一般的理解一致.如果是矩阵和标量进行加减,则该矩阵的所有元素与该标量进行运算.
例21
>> x=[1,2,3;4,5,6];y=[7,8,9;4,3,2];z=x+y,w=x-5
z =
8 10 12
8 8 8
w =
-4 -3 -2
-1 0 1
例22 求线性方程组
x+y+z=6
2x-y+3z=9
5x+y-z=4
并验证.
>> A=[1,1,1;2,-1,3;5,1,-1];b=[6;9;4];x=A\b,r=A*x-b
x =
1.0000
2.0000
3.0000
r =
1.0e-14 *
0.0888
0.1776
-0.0444
2.6 符号运算
例23
>> syms a b x y
例24
>> x=sym('x','rea');
>> y=sym('y','real');
>> z=x+i*y;
>> conj(z)
ans =
x - y*1i
例25
f=sym('(a+b)^2');a=1;g=subs(f)
g =
(b + 1)^2
2.7 M文件
1.程序文件
例27
当前目录:建立prol.m文件
x=1:2
y=x.^2
sum(y)
>> prol
x =
1 2
y =
1 4
ans =
5
2.函数文件
例28
当前目录:建立文件g.m
function[h,c,j,s]=g(x,y)
h=x+y;
c=x-y;
j=x*y;
s=x/y;
>> [h,c,j,s]=g(4,5)
h =
9
c =
-1
j =
20
s =
0.8000
例29
下面的程序用来检验一个正整数能否可以写成两个素数的和.如果正整数x不能写成两个素数的和,则输出一个空集;若正整数x能写成两个素数的和,则输出两个素数构成的集合,这两个素数的和为x
f.m
function s=f(x)
m=2;n=floor(x/2);s=[];
while isempty(s) & m<=n
if isprime(m) & isprime(x-m)
s=[m,x-m];
end
m=m+1;
end
>> f(18)
ans =
5 13
>> f(11)
ans =
[]
2.8 程序流程控制
1.分支结构
例30 定义符号函数h(x)
1,x>0
0,x=0
-1,x<0
f.m
function y=h(x)
if x>0
y=1
elseif x==0
y=0
else
y=-1
end
>> f(2)
y =
1
2. 循环结构
1)for循环
例31
计算1+2+...+20 与20!
>> s=0;p=1;
>> for k=1:20
s=s+k;
p=p*k;
end;
>> disp(['s=',num2str(s),',p=',num2str(p)])
s=210,p=2.43290200817664e+18
2)while循环
例32
>> format long;
x=1;stopc=1;esp=1e-8;n=0;
while stopc>eps
x=(x+2/x)/2;n=n+1;
stopc=abs(x-sqrt(2));
end
n
x
n =
5
x =
1.414213562373095
2.9 输入输出命令
1.键盘输入命令input
>> x=input('x=')
x=3
x =
3
2.屏幕输出命令disp
>> a=1;b=2.5;
disp([a,b]), disp(['a=',num2str(a),'b=',num2str(b)])
1.000000000000000 2.500000000000000
a=1b=2.5
3. 格式输出命令fprintf
例34
>> a=1;b=2.5;fprintf('a=%5i,b=%10.3f',a,b)
a= 1,b= 2.500
4.文件建立与关闭命令fopen与fclose
例35
下列命令首先产生一个矩阵,然后将其存入一个文件,最后显示该文件的内容.
>> x=0:0.2:1;
y=[x;exp(x)];
fid=fopen('a.txt','wt');
fprintf(fid,'%6.2f %12.8f\n',y);
fclose(fid);
type a.txt
0.00 1.00000000
0.20 1.22140276
0.40 1.49182470
0.60 1.82211880
0.80 2.22554093
1.00 2.71828183
5.格式读入命令fscanf
例36
下面的程序将a.txt 文件的内容读入到矩阵b中
>> fid=fopen('a.txt','r');
b=fscanf(fid,'%g %g',[2,inf]);
b=b'
fclose(fid);
b =
0 1.000000000000000
0.200000000000000 1.221402760000000
0.400000000000000 1.491824700000000
0.600000000000000 1.822118800000000
0.800000000000000 2.225540930000000
1.000000000000000 2.718281830000000
2.10 窗口、文件、系统命令
表0.4
例38
下面的命令以当前时间的秒为种子产生随机数,每次重新启动MATLAB时,产生的随机数是一致的.该命令提供了一种产生不同随机数的方法.
u=clock;rand('seed',u(6));rand;
参考文献
杨振华.郦志新.2010.数学实验.北京:科学出版社