matlab 上机作业1,中国石油大学

  • 格式:doc
  • 大小:328.00 KB
  • 文档页数:5

下载文档原格式

  / 5
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一次上机实习

1.编写一个程序ex1_1.m,对输入的方阵计算其伴随矩阵。

a)要求第一行帮助行注明这个函数的用途,能在matlab命令窗口可以用help或lookfor

查到该帮助;

b)对输入的变量进行检测,如果输入的不是方阵或者矩阵元素不是数,则报错,退出程

序。

function A=ex1_1(X)

% 建立函数A=ex1_1(X),求矩阵X的伴随矩阵

[a,b]=size(X);

if a~=b||~isnumeric(X) || ~ismatrix(X)

error('输入的不是方阵或者矩阵元素不是数!');

end

for i=1:a

for j=1:b

A(i,j)=(-1)^(i+j)*X(i,j)*det(X([1:i-1,i+1:end],[1:j-1,j+1:end]));

end

end

A=A';

2.已知表达式y=6*x^5+4*x^3+2*x^2-7x+10,x的范围是[0,100],使用三阶拟合和五阶的方法得出多项式的表达式,并编程在图中绘制出原曲线、三阶拟合和五段拟合的曲线。

clc

clear all

x=linspace(0,100,2000);

p1=[6 0 4 2 -7 0];

y=polyval(p1,x);

p3=polyfit(x,y,3);

p5=polyfit(x,y,5);

y1=polyval(p3,x);

y2=polyval(p5,x);

plot(x,y,'r-o')

hold on

grid on

plot(x,y1,'b-.',x,y2,'y--*');

grid on

三条曲线

放大图(原曲线与五阶拟合完全重合):

3.读如图像5.tif(450*450),做fourier变换,

a)将变换之后所得到的矩阵只保留前10行10列,后10行10列的数据,其他位置都

设置为0,然后再作反fourier变换,观察结果;

原图:

运行程序:

clc

clear all

I=imread('5.tif');

figure(1);

imshow(I);

B=fft2(I);

C=ones(size(B));

C(11:end-10,11:end-10)=0;

B1=B.*C;

B1=B1./256;

I1=ifft2(B1);

figure(2);

imshow(I1);

图像:

b)将变换之后所得到的矩阵将前10行10列,后10行10列的数据置为0,然后再作

反fourier变换,观察结果;

clc

clear all

I=imread('5.tif');

figure(1);

imshow(I);

B=fft2(I);

C=zeros(size(B));

C(11:end-10,11:end-10)=1;

B1=B.*C;

B1=B1./256;

I1=ifft2(B1);

figure(2);

imshow(I1);

c) 从观察的结果你有什么体会。

1, 图像数据中大量的信息储存在矩阵的外围,中心部分数据是将图像锐化的信息;

2, 图像数据储存的方式有很多种,该例每个点应该是0或者1,所以逆变换之后应该将每

个点的数据变为0或者1(即除以256)

4. 完成课本P310页起实验1,实验2中的基本操作。

5. 已知线性代数方程组

123123123

123315183156x x x x x x x x x -+=⎧⎪-+-=-⎨⎪++=⎩(1)

(1)分别应用“求逆”法和“左除”法来求解;

(2)求系数矩阵的特征值和特征向量;

(3)求系数矩阵的行列式,并用cram 法则求解方程组(建议编写一个通用的函数进行计算);

(4)求矩阵的秩。

求逆:

A=[12 -3 3;-18 3 -1;1 1 1];

b=[15;-15;6];

x1=A\b;

x2=inv(A)*b;

[V A,VB]=eig(A);

d=eig(A);

R=rank(A);

D=det(A);

Cramer 法函数

function Cramer(~,~)

%Cramer's Law

A=input('输入系数矩阵:');

b=input('输入解向量:');

if det(A)==0

error('输入的系数矩阵无解!'); end

return

[~,c]=size(A);

a=zeros(c,1);

for i=1:3

Ai=A;

Ai(:,i)=b;

a(i)=det(Ai)/det(A);

end