admin 管理员组

文章数量: 1086019


2024年3月29日发(作者:数组相对排序java)

Matlab例题汇总:

【例2-4】两个矩阵分别为[1 2 3;4 5 6;7 8 9]和[1 1 1;2 2 2;3 3

3],求两者相加的和。

a=[1 2 3;4 5 6;7 8 9];

b=[1 1 1;2 2 2;3 3 3];

c=a+b

【例2-5】两个矩阵分别为[1 2 3;4 5 6;7 8 9]和[1 1 1],阶数

不同, 求两者相减的差。

a=[1 2 3;4 5 6;7 8 9];

b=[1 1 1];

c=a-b

【例2-6】两个矩阵相乘,矩阵a为 ,矩阵b为,分别计算

c=a*b和d=b*a。

a=[1 2 3;4 5 6;7 8 9];

b=[1 2 3];

c=a*b

% 将第三句c=a*b改成d=b*a,再运行一次

% 【例2-7】两个数组相乘,数组a为 ,数组b为 ,求两

数组的乘法。

% 在命令窗口输入两数组,计算c=a.*b:

a=[1 2 3];

b=[4 5 6];

c=a.*b

% 【例2-8】两个矩阵相除,矩阵a和b均为3×3阶矩阵。

a=rand(3)

b=rand(3)

c=a/b

d=ba

% 【例2-9】数组a为 ,数组b为 ,求两数组的除法。

a=[1 2 3];

b=[4 5 6];

c=a.b

c=b./a

% 【例2-10】矩阵a为[1 2;3 4],求它的1.5次幂。

a=[1 2;3 4];

c=a^1.5

% 【例2-11】数组a为[1 2 3],数组b为[4 5 6],求数组的

幂c=a.^b。

a=[1 2 3];

b=[4 5 6];

c=a.^b

% 【例2-12】数组a为[1 2 3],求数组的幂c=a.^2。

a=[1 2 3];

c=a.^2

% 【例2-13】数组a为[1 2 3],求数组的幂运算c=2.^a。

a=[1 2 3];

c=2.^a

% 【例2-14】矩阵a为[1 2 3;4 5 6;7 8 9],计算a的转置。

a=[1 2 3;4 5 6;7 8 9];

c=a'

% 【例2-15】矩阵a为[1+2i 3+4i],计算a的转置。

a=[1+2i 3+4i];

c=a'

c=a.'

% 【例2-16】矩阵a和b均为1×3阶矩阵,使用关系运算

符对对应元素进行比较。

a=[0 -1 2];

b=[-3 1 2];

a

a<=b

a>b

a>=b

a==b

a~=b

% 【例2-17】矩阵a和b均为2×3阶矩阵,使用逻辑运算

符计算对应元素。

a=[1 0 3;0 -1 6];

b=[-1 0 0;0 5 0.3];

a&b

a|b

~a

~b

% 【例2-18】矩阵a为[1 2 3;4 5 6;7 8 9],计算a的特征值

和特征矢量。

a=[1 2 3;4 5 6;7 8 9];

[c,d]=eig(a)

% 【例2-19】矩阵a为[1 2 3;4 5 6;7 8 9],计算a的逆矩阵

和伪逆矩阵。

a=[1 2 3;4 5 6;7 8 9];

c=inv(a)

c=pinv(a)

% 【例2-20】矩阵a为[1 2 3;4 5 6;7 8 9],矩阵b为[-2 1 3;1

4 -2;2 -1 2],

% 计算a和b的广义特征值分解。

a=[1 2 3;4 5 6;7 8 9];

b=[-2 1 3;1 4 -2;2 -1 2];

[v,d]=eig(a,b)

%【例2-21】矩阵a为[1 1],对矩阵a进行奇异值分解。

a=[1 1];

[u,s,v]=svd(a)

% 【例2-22】矩阵a为[1 2 3;4 5 6;7 8 9],求a的LU分解。

a=[1 2 3;4 5 6;7 8 9];

[l,u]=lu(a)

% 【例2-23】矩阵a为4阶pascal矩阵,求a的Chollesky

分解。

a=pascal(4)

c=chol(a)

% 【例2-24】矩阵a为4阶pascal矩阵,求a的QR分解。

a=pascal(4)

[q,r]=qr(a)

% 【例2-25】矩阵a为4阶pascal矩阵,将其重新排列为

1×16阶的一维矢量

% 和2×4×2阶的三维数组。

a=pascal(4)

c=reshape(a,1,16)

c=reshape(a,2,4,2)

% 【例2-26】矩阵a为4阶pascal矩阵,分别将其左右翻

转、上下翻转和旋转。

a=pascal(4)

c=fliplr(a)

c=flipud(a)

c=rot90(a)

% 【例2-27】矩阵a为4阶pascal矩阵,分别抽取其对角

线元素、创建对角

% 矩阵、抽取上三角矩阵和下三角矩阵。

a=pascal(4)

c=diag(a,1)

b=diag(c,1)

c=tril(a)

c=triu(a,-1)

%【例3-1】输入系数矢量,创建多项式x^3-4*x^2+3*x+2。

poly2sym([1 -4 3 2])

%【例3-1】输入系数矢量,创建多项式x^3-4*x^2+3*x+2。

poly2sym([1 -4 3 2])

% 【例3-3】根据根矢量[-0.5 -0.3+0.4i -0.3-0.4i],创建多项

式。

r=[-0.5 -0.3+0.4i -0.3-0.4i];

p=poly(r)

pr=real(p)

ppr=poly2sym(pr)

% 【例3-4】求多项式3x^2+2x+1在5、7和9处的值。

p = [3 2 1];

polyval(p,[5 7 9])

% 【例3-5】求多项式3x^2+2x+1对于矩阵[2 5;7 9]的值。

p = [3 2 1];

polyvalm(p,[2 5;7 9])

% 【例3-6】分别用两种方法求多项式

x^5-5x^4+3x-6x2+4x-10的根。

a=[1 -5 3 -6 4 -10];

r=roots(a)

s=compan(a)

r=eig(s)

% 【例3-7】计算两多项式x^4-5x^3+3x^2-4x+2和

x^3+2x^2-5x+3的乘法。

a=[1 -5 3 -4 2];

b=[1 2 -5 3];

c=conv(a,b)

% 【例3-8】计算例3-7中求得的乘积被x^3+2x^2-5x+3除

所得结果。

c=[1 -3 -12 30 -36 33 -22 6];

b=[1 2 -5 3];

d=deconv(c,b)

% 【例3-9】计算多项式3x^4-5x^3+2x^2-6x+10的微分。

p=[3 -5 2 -6 10];

polyder(p)

poly2sym(ans)

% 【例3-10】计算多项式12x^3-15x^2+4x-6的积分。

p=[12 -15 4 -6];

polyint(p)

% b(x) 5x^3+3x^2-2x+7

% 【例3-11】两多项式的比为—— = ——————— ,

求部分分式展开。

% a(x) -4x^3+8x+3

a = [-4 0 8 3];

b = [ 5 3 -2 7];

[r, p, k] = residue(b,a)

% 【例3-12】 利用在例3-11中求得的部分分式展开结果转

换回多项式表达式b(x)

% 和a(x)的系数。

[b,a] = residue(r,p,k)

% 【例3-13】 求误差函数的6阶拟合多项式。

x = (0: 0.1: 2.5)'; % 生成0至2.5间隔为

0.1的自变量

y = erf(x); % 计算误差函数

p = polyfit(x,y,6) % 求6阶拟合多项式

x = (0: 0.1: 5)'; % 生成0至5间隔为

- 1 -

0.1的自变量

y = erf(x); % 计算误差函数

f = polyval(p,x); % 计算拟合函数的值

plot(x,y,'o',x,f,'-') % 绘图函数

axis([0 5 0 2])

% 【例3-14】 a为方阵,b为矢量,求方阵系统的根。

a=fix(15*rand(3,3))

b=fix(15*rand(3,1))

x=ab

% 【例3-15】 a和b均为方阵,求方阵系统的根。

a=fix(15*rand(3,3))

b=fix(15*rand(3,3))

x=ab

% 【例3-16】求表中数据的最小二乘解。

% -----------------------------------------

% t | 0 0.3 0.8 1.1 1.6 2.3

% ---+-------------------------------------

% y | 0.82 0.72 0.63 0.60 0.55 0.50

% -----------------------------------------

t=[0 0.3 0.8 1.1 1.6 2.3]';

y=[0.82 0.72 0.63 0.60 0.55 0.50]';

e=[ones(size(t)) exp(-t)]

c=ey

t1=[0:0.1:2.5]';

y1=[ones(size(t1)),exp(-t1)]*c;

plot(t1,y1,t,y,'ro')

% 【例3-17】求解欠定系统。

a=fix(15*rand(3,3))

b=fix(15*rand(3,1))

p=ab

% 【例3-18】使用两种方法求解欠定系统。

a=[1 1 1;1 1 -1]

b=[10 6]'

p=ab

q=pinv(a)*b

% 【例3-19】基本统计函数的应用。

A=randn(100,4);

Amax=max(A)

Amed=median(A)

Amean=mean(A)

Astd=std(A)

% 【例3-20】计算协方差和相关系数矩阵。

x=rand(10,3);

y=rand(10,3);

cx=cov(x)

cy=cov(y)

cxy=cov(x,y)

px=corrcoef(x)

pxy= corrcoef(x,y)

% 【例3-26】三维插值实例。

[x,y,z,v] = flow(10);

slice(x,y,z,v,[6 9.5],2,[-2 .2])

[xi,yi,zi] = meshgrid(.1:.25:10, -3:.25:3, -3:.25:3);

vi = interp3(x,y,z,v,xi,yi,zi);

figure,slice(xi,yi,zi,vi,[6 9.5],2,[-2 .2]);

shading flat

% 【例3-21】计算三维数组的差分。

a=rand(3,3,2)

diff(a)

diff(a,2)

diff(a,3)

diff(a,4)

diff(a,5)

diff(a,6)

% 【例3-22】计算表达式xe^(-x.^2 - y.^2)的梯度。

v = -2:0.2:2; % 生成-2到2间

隔为0.2的自变量

[x,y] = meshgrid(v); % 产生数据网格

z = x .* exp(-x.^2 - y.^2); % 计算z

[px,py] = gradient(z,.2,.2); % 求二维梯度

contour(x,y,z) % 绘制等高线

hold on % 保持绘图

quiver(x,y,px,py) % 绘制矢量图

hold off

% 【例3-23】一维插值函数插值方法的对比。

x=0:10;

y=sin(x);

xi=0:.25:10;% 将插值方法定义为单元数组

strmod={'nearest','linear','spline','cubic'}

% 将X轴标识定义为单元数组

strlb={'(a) method=nearest', '(b) method=linear',...

'(c) method=spline', '(d) method=cubic'};

for i=1:4

yi=interp1(x,y,xi,strmod{i});

subplot(2,2,i),plot(x,y,'ro',xi,yi,'b') % 在一个图形窗

口绘制多幅图形

xlabel(strlb(i))

end

% 【例3-24】三次样条插值。

x0=0:10;

y0=sin(x0);

x=0:.25:10;

y=spline(x0,y0,x);

plot(x0,y0,'or',x,y,'k')

% 【例3-25】二维插值四种方法的对比。

[x,y,z]=peaks(7); % 生成双峰函数

mesh(x,y,z) % 绘制网格图

f=x^n f=x*log(1+x);

diff(f) int(f,0,1)

diff(f,n)

% 10 2 ∞ x^k

% 【例4-6】查询符号函数中的默认自变量。

% 【例4-19】分别计算表达式∑k 、∑ k 和 ∑ ---- 。

syms a b n t x

% 0 k=0 k!

f=a*x^n+b*t

syms k x

findsym(f,1)

symsum(k)

findsym(f,2)

symsum(k^2,0,10)

findsym(f,5)

symsum(x^k/sym('k!'), k, 0,inf)

findsym(f)

% 1

[xi,yi]=meshgrid(-3:0.2:3,-3:0.2:3); % 生成供插值的数据

网格

z1=interp2(x,y,z,xi,yi,'nearest');

z2=interp2(x,y,z,xi,yi,'linear');

z3=interp2(x,y,z,xi,yi,'spline');

z4=interp2(x,y,z,xi,yi,'cubic');

figure,mesh(xi,yi,z1) % 绘制邻近点方法插值

结果的网格图

figure,mesh(xi,yi,z2) % 绘制双线性方法插值

结果的网格图

figure,mesh(xi,yi,z3) % 绘制三次样条方法插

值结果网格图

figure,mesh(xi,yi,z4) % 绘制二重立方方法插

值结果网格图

% 【例3-27】产生一个正弦衰减曲线,进行快速傅里叶变

换,并画出幅值图、

% 相位图、实部图和虚部图。

tp=0:2048; % 时域

数据点数N

yt=sin(0.08*pi*tp).*exp(-tp/80); % 生成正弦

衰减曲线

t=0:800/2048:800; % 频域点

数Nf

f=0:1.25:1000;

yf=fft(yt); % 快速傅

里叶变换

ya=abs(yf(1:801)); % 幅值

yp=angle(yf(1:801))*180/pi; % 相位

yr=real(yf(1:801)); % 实部

yi=imag(yf(1:801)); % 虚部

plot(tp,yt), axis([0,200,-1,1]) % 绘制正弦衰减

曲线

figure, plot(f,ya), axis([0,200,0,60]) % 绘制FFT幅值

曲线

figure, plot(f,yp), axis([0,200,-200,10]) % 绘制FFT相位

曲线

figure, plot(f,yr), axis([0,200,-40,40]) % 绘制FFT实部

曲线

figure, plot(f,yi), axis([0,200,-60,10]) % 绘制FFT虚部

曲线

% 【例3-28】比较快速傅里叶变换的长度与运算速度的关

系。

% 创建70000′1阶的随机矢量x,取快速傅里叶变换的长

度分别为质数65539、

% 2的16次方65536、两个合数66000和65535,分别计算

使用这些长度计算fft

% 所占用的cpu时间:

x=rand(70000,1);

isprime(65539) % 判断

65539是否为质数

2^16 % 计算

2的16次方

factor(66000) % 计算

66000的因数分解

factor(65535) % 计算

65535的因数分解

t=cputime;y=fft(x,65539);e=cputime-t

t=cputime;y=fft(x,65536);e=cputime-t

t=cputime;y=fft(x,66000);e=cputime-t

t=cputime;y=fft(x,65535);e=cputime-t

% 【例4-1】使用sym函数创建符号变量。

a=sym('a')

b=sym('hello')

c=sym('(1+sqrt(5))/2')

y=sym('x^3+5*x^2+12*x+20')

% 【例4-2】使用syms函数创建符号变量。

syms a b c d

% 【例4-3】创建一个循环矩阵。

syms a b c d

n=[a b c d;b c d a;c d a b;d a b c]

% 【例4-4】将3阶Hilbert矩阵转换为符号矩阵。

h=hilb(3)

h1=sym(h)

% 【例4-5】求符号函数在不同自变量情况下的结果。

syms x n

% 【例4-7】对表达式 进行因式分解。

syms x

f=factor(x^9-1)

pretty(f)

% 【例4-8】对大整数123456789进行因式分

解。

factor(sym('123456789'))

% 【例4-9】展开表达式f=(x+1)^5和f=sin(x+y)。

syms x y

f=(x+1)^5;

expand(f)

f=sin(x+y);

expand(f)

% 【例4-10】对于表达式f=x*(x*(x-6)+12)*t,分别将自变

量x和t的同类项合并。

syms x t

f=x*(x*(x-6)+12)*t;

collect(f)

collect(f,t)

% 【例4-11】对表达式f=sin(x)^2+cos(x)^2进行化简。

syms x

f=sin(x)^2+cos(x)^2;

simplify(f)

% x y

% 【例4-12】对表达式f=--- + ---进行通分。

% y x

syms x y

f=x/y+y/x;

[n,d]=numden(f)

% 【例4-13】对表达式f=x^3+6*x^2+11*x-6进行嵌套形式

重写。

syms x

f=x^3+6*x^2+11*x-6;

horner(f)

% 【例4-14】求解并化简三次方程x^3+a*x+1=0的符号解。

t = solve('x^3+a*x+1 = 0')

[r,s] = subexpr(t,'s')

% 【例4-15】分别用新变量替换表达式a+b和cos(a)+sin(b)

中变量。

syms a b

subs(a+b,a,4)

subs(cos(a)+sin(b),{a,b},{sym('alpha'),2})

% sin(x) 1

1

% 【例4-16】分别计算表达式lim ------ 、lim --- 、lim ---

% x-0 x x-0+ x

x-0- x

% 1 x -x

% lim (1+---) 和lim e 的极限。

% x-∞- x x-0-

syms x a;

limit(sin(x)/x)

limit(1/x,x,0,'right')

limit(1/x,x,0,'left')

v = [(1 + a/x)^x, exp(-x)];

limit(v,x,inf,'left')

% 【例4-17】分别求分别计算表达式f=x^x的导数和3次

导数。

syms x;

f=x^x;

diff(f)

diff(f,3)

% -2x x

x

% 【例4-18】分别计算表达式∫---------dx 、∫-------dx 、

∫-------dz

% (1+x^2)^2 (1+z)^2

(1+z)^2

% 1

% 和∫xlog(1+x)dx 。

% 0

syms x z;

f=-2*x/(1+x^2)^2;

int(f)

f=x/(1+z^2);

int(f)

int(f,z)

- 2 -

xsin(x)

% 【例4-20】分别计算表达式f=--------的5阶Taylor级数

展开式和f=e 的

% 5+cos(x)

% 5阶及12阶Taylor级数展开式。

syms x

f=1/(5+cos(x));

r=taylor(f)

f=exp(x*sin(x));

r=taylor(f)

r=taylor(f,12)

% 【例4-21】分别求解代数方程ax^2+bx+c和

cos(2x)+sin(x)=1。

syms a b c x

s=a*x^2+b*x+c;

solve(s)

solve('cos(2*x)+sin(x)=1')

% x^2-y^2+z=10

% 【例4-22】求解代数方程组{ x+y-5z=0 。

% 2x-4y+z=0

syms x y z

f=x^2-y^2+z-10;

g=x+y-5*z;

h=2*x-4*y+z;

[x,y,z]=solve(f,g,h)

S=solve(f,g,h);

[S.x,S.y,S.z]

% dx

% 【例4-23】求微分方程----=ay 的通解和当y(0)=b时的特

解。

% dy

dsolve('Dy = a*y')

dsolve('Dy = a*y', 'y(0) = b')

% d2x 2 dy π

%【例4-24】求微分方程-----=-a y 当y(0)=1及---(--)=0时的

特解。

% dx2 dt a

dsolve('D2y = -a^2*y', 'y(0) = 1', 'Dy(pi/a) = 0')

% 【例4-25】绘制函数表达式x^2-y^4的二维图形。

syms x y

ezplot(x^2-y^4)

% 2 x -t^2

% 【例4-26】绘制误差函数f(x)=----∫ e 的二维图形。

% √π 0

syms x

ezplot(erf(x))

grid

%【例4-27】在极坐标下绘制函数表达式1+cos(t)的二维图

形。

syms t

ezpolar(1+cos(t))

%【例4-27】在极坐标下绘制函数表达式1+cos(t)的二维图

形。

syms t

ezpolar(1+cos(t))

% 【例4-29】根据表达式

% 2 -(x^2)-(y+1)^2 x 3 5

-x^2-y^2 1 -(x+1)^2-y^2

% f = 3(1-x) e -10( --- - x - y ) e -

--- e ,

% 5

3

% 绘制f的等高线。

syms x y

f =3*(1-x)^2*exp(-(x^2)-(y+1)^2)-10*(x/5-x^3-y^5)...

*exp(-x^2-y^2)-1/3*exp(-(x+1)^2- y^2);

ezcontour(f,[-3,3],49)

% 【例4-30】根据表达式

% 2 -(x^2)-(y+1)^2 x 3 5

-x^2-y^2 1 -(x+1)^2-y^2

% f = 3(1-x) e -10( --- - x - y ) e -

--- e ,

% 5

3

% 绘制f的的填充等高线。

syms x y

f =3*(1-x)^2*exp(-(x^2)-(y+1)^2)-10*(x/5-x^3-y^5)...

*exp(-x^2-y^2)-1/3*exp(-(x+1)^2- y^2);

ezcontourf(f,[-3,3],49)

% -x^2-y^2


本文标签: 函数 绘制 矩阵 数组 计算