matlab 上机作业1,中国石油大学
- 格式:doc
- 大小:328.00 KB
- 文档页数:5
第一次上机实习
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