Matlab的信号处理仿真应用 联系客服

发布时间 : 星期一 文章Matlab的信号处理仿真应用更新完毕开始阅读48401e0a905f804d2b160b4e767f5acfa1c783f4

例8.计算平均值;(课后思考问题)数据如例7; 计算平均值(使用mean函数) 计算每科考试的平均值

>>average1=mean(cat(1, student.scores)) 注: 成绩 张三 :50; 60; 李四 :65; 80; average1 =

57.5000 70.0000

思考:如何计算每个学生成绩的平均值 ?

average2=mean(cat(1, student.scores),2)

average2 =

55.0000 图十 72.5000 如图十;

cat函数: 排列结构数组某字段的值,格式:cat(dim, structurefield),dim=1, 竖排;dim=2, 横排;

mean(A,dim):当dim为1时,该函数等同于mean(A)返回一个行向量,其第i个元素是A的第i列的算术平均值。当dim为2时,返回一个列向量,其第i个元素是A的第i行的算术平均值;

3.小结:

在第二讲中主要涉及了MATLAB中的数据类型及矩阵,数组运算实例,通过此讲的学习对其中的数据和函数有了更深一步的理解。

Matlab数据类型非常丰富,除数值型、字符型等基本数据类型外,还有结构体、单元等更为复杂的数据类型。

各种数据类型都以矩阵形式存在,矩阵是Matlab最基本的数据对象,并且矩阵的运算是定义在复数域上的。 对课后思考题的处理过程中,自己查阅相关函数资料,较轻松得解决了问题,锻炼了自己的学习能力。

三:MATLAB数值计算

1.MATLAB多项式计算

例9.多项式的导数 (polyder)

求b(x)= x3+4x2+9x+16的导数。

- 5 -

>> b=[1 4 9 16];

d=polyder(b) 3 8 9 d =

结果为: 3x^2+8x+9

运行结果,如图十一; 图十一

另外两种形式为: p = polyder(P,Q):求P*Q的导函数;

[p,q] = polyder(P,Q):求P/Q的导函数,导数分子存入p,分母存入q;

2.MATLAB数值导数及积分运算

例10:数值导数运算

在[-3,3]区间内以0.01为步长求

f(x)?x3?2x2?x?12?6x?5?5x?2数值导数。并画出导函数图像。

>> f = inline('sqrt(x.^3+2*x.^2-x+12)+(x+5).^(1/6)+5*x+2'); %内联函数 x = -3:0.01:3;

dx = diff(f([x,3.01]))/0.01; %根据定义式求导数 plot(x,dx)

结果如图十二;

MATLAB中没有直接提供数值导数的函数,只有计算向前差分的函数diff,其调用格式为:

DX = diff(X) 计算向量X的向前差分

DX = diff(X,n) 计算向量X的n阶向前差分

图十二 例11:数值积分运算

11求解定积分 I??lndx0x用quad指令求积分

>>ff=inline('sqrt(log(1./x))','x'); Isim=quad(ff,0,1) Isim = 0.8862

运行结果如图十三;

图十三

quad函数:q = quad(fun,a,b)输入量fun为被积函数的句柄。输入量a, b分别是积分的下限、和上限,都必须是确定的数值;

- 6 -

3.小结

本讲自我感觉是对第二讲的延伸和扩展,在数值运算的基础上对多项式的计算和求导积分,进一步学习MATLAB强大的计算能力。几个例程中主要还是各个函数的调用及使用,在这里help及doc指令体现出了很大的作用,同时锻炼了我们独立自学的能力。

四.数据和函数的可视化

1.MATLAB二维曲线及三维绘图

例12.二维曲线绘图(重绘曲线)

y?sin(t)sin(9t)及其包络线。 重绘波形

t=(0:pi/100:pi)'; %长度为101的时间采样列向量 y1=sin(t)*[1,-1]; %包络线函数值,是(101x2)的矩阵 y2=sin(t).*sin(9*t); %长度为101的调制波列向量 t3=pi*(0:9)/9; y3=sin(t3).*sin(9*t3); plot(t,y1,'r:’) hold on

plot(t,y2,'b‘)

plot(t3,y3,'bo') axis([0,pi,-1,1]) %控制轴的范围 hold off

hold on 保持当前坐标轴和图形,并可以接受下一次绘制。

hold off 取消当前坐标轴和图形保持,这种状态下,调用plot绘制完全新的图形,不保留以前的坐标格式、曲线。

图十四 例13.三维网线图(mesh)和曲面图(surf)

绘制函数z=x^2+y^2的曲面

x=-4:4;y=x;

[X,Y]=meshgrid(x,y); %生成 x-y 坐标“格点”矩阵 z=X.^2+Y.^2; %计算格点上的函数值 subplot(1,2,1), mesh(X,Y,z); %三维网格图

- 7 -

subplot(1,2,2), surf(X,Y,z); %三维曲面图 colormap(hot);

subplot(m, n, k)的含义:图形窗口包含(m×n)个子图,k为要指定的当前子图的编号。其编号原则: 左上方为第1子图,然后向右向下依次排序。该指令按缺省值分割子图区域。

图十五 2.图像文件的读写与图像显示

例14.简单图像处理

clc

close all clear all

img1=imread('郭茂.jpg'); imshow(img1);

lighter = 1.15* img1;

subplot(2,2,1); imshow(img1);

title('Original'); % Display image

subplot(2,2,2); 图十六 imshow(lighter);

title('Lighter'); % Display image imwrite(lighter, 'mysaved.jpg') subplot(2,2,3);

black = rgb2gray(img1); imshow(black) zoom on

subplot(224);

imag_edge1 = edge(img1, 'canny'); %sobel边缘提取算法

imshow(imag_edge1); 运行结果如图十六;

- 8 -