发布时间 : 星期一 文章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 -