matlab实验报告

更新时间:2023-10-28 21:31:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

华中科技大学文华学院

MATLAB实验报告

专业班级:水利工程104班

学 号:10010303135 学生姓名:吴 小

2011年11月31日

1

3??x?2cost??y?2sin3tt?[0,2?]?1.用蓝色虚线绘制星型线在的图形.

源代码:

t=0:0.1:2*pi; x=2*cos(t).^3; y=2*sin(t).^3; plot(x,y,'--*b') 运行结果:

21.510.50-0.5-1-1.5-2-2-1.5-1-0.500.511.52

?0.5xx?2?2.;编写一个函数,使其能产生如下分段函数:f(x)??1.5?0.25x2?x?6,并调用

?0.5x?6?此函数,绘制x在[0,9],y在[0,1.5]上的f(x)的曲线,要求给x,y轴标注,并

指出最大值的位置,写出完整的程序。

源代码: x=0:0.01:9;

y=asd(x); %调用函数 plot(x,y);

xlabel('x((0-9))'); ylabel('y(0-1.5)');

text(2,1,'(2,1)'); %标定最大值 >> axis([0 9 0 1.5]) %标定x,y的范围 函数:

function y=asd(x) n=length(x); for k=1:n

2

if x(k)<=2

y(k)=0.5*x(k); elseif x(k)>2&x(k)<=6 y(k)=1.5-0.25*x(k); else

y(k)=0.5; end end 运行结果:

1.51(2,1)y(0-1.5)0.50012345x((0-9))6789

体会:在我编写函数时显示了错误,说自变量没有定义,但结果却可以输出运行结果,对此我自己不知道,我只能理解是输出的命令与函数结合得到的结果。

?3.已知连续信号卷积的计算式 求下面两个信号的卷积。

f(t)????f(?)*f12(t??)d? ? 2 t t ) sin( t ) , f (?f1(t)?e2,t?0源代码: syms t; z=2;

f=(exp(-2*t)*sin(z-t));

w=int(f,0,inf) %对f进行积分 运行结果: w =

(2*sin(2))/5 - cos(2)/5

4.从键盘输入一串字符,找出该字符串中所有的数字,并保存成数值数组Digital。 源代码:

3

x='hd78346fg873d4efrf'; f=find(x>='0'&x<='9');

s=x((f)); %重新构造字符串 for n=1:length(s)

gitital(n)=str2num(s(n)); %将数字字符转化为数值类型 end

>> gitital 运行结果: gitital =

7 8 3 4 6 8 7 3 4 体会:这道题使我对字符和字符角标有了很深的体会。

6.将一个屏幕分成4幅,在左上福和右下幅分别绘制下列函数的图形:(1)f(x)?|sin(x)| ,绘制x在[-pi/2,pi/2] 的红色曲线图;

2)f(x,y)?x2y2(32?42,?3?x?3,?4?y?4,绘制该函数,蓝色。

源代码:

x=-pi/2:0.01:pi/2;

f=sqrt(abs(sin(x))); subplot(2,2,1); plot(x,f,'r'); subplot(2,2,2); subplot(2,2,3); subplot(2,2,4);

ezplot('z^2/3^2+y^2/4^2-0.5',[-3,3,-4,4]) 运行结果:

110.50.50-2-1012000.51z2/32+y2/42-0.5 = 01420.5z0-2000.51-4-202y

4

7.以构架数组表示3个人的基本信息,构架数组的每一个构架表示一个人的信息。三个人的基本信息如下: 姓名( Name ) 年龄( Age ) 成绩( Score ) Xujia 20 85 wanglibo 21 100 huangweiguo 20 52 成绩按如下划分区域:满分(100),优秀(90-99),良好(80-89),及格(60-79), %不及格(<60),请标出每个学生的成绩等级。 源代码:

for i = 1:10

a(i) = 89+i; b(i) = 79+i;

c(i) = 69+i; %for循环就相当于一个函数。 d(i) = 59+i; end

c = [d,c]; %及格范围60~79 Name = {' Jack','Marry','Peter'}; %元胞数组 Age={21,21,23}; Mark = {83,56,100};

Rank=cell(1,3); %创建一个1*5的构架数组S,它有三个域。 S = struct('Name',Name,'Age',Age,'Mark',Mark,'Rank',Rank); for i = 1:3

switch S(i).Mark case 100 %得分为100时 S(i).Rank = '满分'; %列为'满分'等级

case num2cell(a) %得分在90和99之间 S(i).Rank = '优秀'; %列为'优秀'等级

case num2cell(b) %得分在80和89之间 S(i).Rank = '良好'; %列为'良好'等级

case num2cell(c) %得分在60和79之间 S(i).Rank = '及格'; %列为'及格'等级 otherwise %得分低于60。 S(i).Rank = '不及格'; %列为'不及格'等级 end end

disp(['学生姓名 ',' 年龄 ',' 得分 ',' 等级']);disp(' ') for i=1:3;

disp([S(i).Name,blanks(6),num2str(S(i).Age),blanks(6),num2str(S(i).Mark),blanks(6), S(i).Rank] ); end

5

运行结果:

学生姓名 年龄 得分 等级 Jack 21 83 良好 Marry 21 56 不及格 Peter 23 100 满分

体会:这道题是通过老师的PPT改编过来的,其中弄清楚了结构体的表达。 8.针对信号t2,计算fourier变换和laplace变换. 源代码:

syms t;

v=fourier(t^2) >> s=laplace(t^2) 运行结果: v=

(-2)*pi*dirac(w, 2) s = 2/s^3 9.计算定积分

?basinxexdx ,计算导数(sinxex)/

源代码: syms x a b;

y=sin(x)*exp(x); r1=int(y,a,b) r2=diff(y) 运行结果: r1 =

(exp(a)*cos(a))/2 - (exp(b)*cos(b))/2 - (exp(a)*sin(a))/2 + (exp(b)*sin(b))/2 r2 =

exp(x)*cos(x) + exp(x)*sin(x)

10.读入一幅图像,提取该图像的边缘信息并显示。 源代码:

RGB=imread('e:\\非主流\\017(1).jpg');

I=rgb2gray(RGB); %原图转换为灰度图像 figure(1); imshow(I);

colorbar('horiz');

ω isgray(I); %边缘检测 ED=edge(I,'sobel',0.08); figure(2); imshow(ED); 运行结果:

6

050100150200250

体会:这是根据书上的例子编写的,知道了如何输入图片。 11.针对函数f(x)=

ex在

x∈{0,0.1,0.2,?,5}上的取值,采用多项式进行拟合,并对x∈

{0.15,0,45,0.75} 分别采用最邻近、双线性和三次样条插值方法进行插值。 源代码: x=0:0.1:5; y=exp(x);

p1=polyfit(x,y,8);

y4=polyval(p1,x); %函数取值拟合 hold on; plot(x,y,'rd'); plot(x,y4,'b--'); xi=0.15:0.3:0.75;

yi_nearest=interpl(x,y,xi,'nearest'); %进行插值 三种方式 yi_linear=interpl(x,y,xi);

yi_spline=interpl(x,y,xi,'spline'); figure; hold on;

subplot(2,2,1);

7

plot(x,y,'ro',xi,yi_nearest,'b-'); title('最邻近插值'); subplot(2,2,2);

plot(x,y,'ro',xi,yi_linear,'b-'); title('线性插值'); subplot(2,2,3);

plot(x,y,'ro',xi,yi_spline,'b-'); title('三次样条插值'); 运行结果:

15010050000.511.522.533.544.55

最邻近插值线性插值15015010010050500024600246三次样条插值1501005000246

8

体会:在做这道题时,也是按照书上例子做的,知道了插值函数的格式和用途对以后作图有帮助,或做表格时知道如何应用。

12.计算脉冲信号和单位正弦信号的卷积。 源代码: t=1:40;

x=zeros(size(t));

x(1)=1; %产生单位脉冲信号 y=sin(t); %单位正弦信号 z=conv(x,y) %信号的卷积 figure

subplot(1,1,1); stem(z);

10.80.60.40.20-0.2-0.4-0.6-0.8-10102030405060708012.对比单位脉冲信号经过一个带阻滤波器前后的频谱。 源代码:

t=1:40; %信号的时间 x=zeros(size(t)); x(1)=1;

[b,a]=butter(10,[0.3 0.7],'stop'); %设计带阻滤波器 y=filter(b,a,x); %滤波 figure; hold on;

stem(t,x,'marker','o'); stem(t,y,'marker','.'); xlabel('时间(s)');

legend('原始信号','滤波后信号'); fx=fft(x);

fx=fftshift(fx);

9

fy=fft(y);

fy=fftshift(fy); figure;

subplot(2,1,1); f=(t-20)/20;

plot(f,abs(fx),'b-',f,abs(fy),'b-.'); xlabel('数字频率(rad)'); title('幅频曲线');

legend('原始信号','滤波后信号'); subplot(2,1,2);

plot(f,angle(fx),'b-',f,angle(fy),'b-.'); xlabel('数字频率(rad)'); title('相频曲线');

legend('原始信号','滤波后信号'); 运行结果:

1 原始信号0.8滤波后信号0.60.40.20-0.2-0.4 0510152025303540时间(s)幅频曲线1.5 原始信号1滤波后信号0.50-1 -0.8-0.6-0.4-0.200.20.40.60.81数字频率(rad)相频曲线4 原始信号2滤波后信号0-2-4-1 -0.8-0.6-0.4-0.200.20.40.60.81数字频率(rad)

10

本文来源:https://www.bwwdw.com/article/ji42.html

Top