- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
function z=imadjust_sec(x,a,b,c,d) [height,width]=size(x); x1=im2double(x); for i=1:height for j=1:width if (x1(i,j)<a) z(i,j)=c*x1(i,j)/a; elseif (x1(i,j)>=a&x1(i,j)<b) z(i,j)=(d-c)*(x1(i,j)-a)/(b-a)+c; else z(i,j)=(1-d)*(x1(i,j)-b)/(1-b)+d; end end end
直接实现:n=[ns:nf]; x=[(n-n0)>=0];
3.实指数序列 n x(n) a n a R 直接实现:n=[ns:nf]; x=a.^n; 4.复指数序列
x(n) e
( j) n
直接实现:n=[ns:nf]; x=exp((sigema+jw)*n); 5.正(余)弦序列 x(n) cos(n ) 直接实现:n=[ns:nf]; x=cos(w*n+sita);
1
0.5
0
-0.5
-1
0
0.05
0.1
0.15
0.2
图2 锯齿波
例3. 产生一个sinc信号.
1
t=linspace(-5,5); x=sinc(t); plot(t,x)
0.8 0.6 0.4 0.2 0 -0.2 -0.4 -5
0
5
图3 sinc信号波形
例4. 产生一个脉冲调制信号
t=0:1/50e3:10e-3; %抽样频率50kHz,抽样时间10ms d=[0:1/1e3:10e-3;0.8.^(0:10)]’; %第一列说明每一脉冲的延迟时间,第二列说明每一次 幅值衰减 x=pulstran(t,d,’gauspuls’,10e3,0.5); %调制波为高斯噪声,频率1kHz,带宽50% plot(t,x)
title('FFT')
xlabel('Hz') grid on x=x+randn(size(x)); subplot(413),plot(x)
%在信号中加入噪声
title('含随机噪声的信号')
xlabel('序列N'),grid on y=fft(x,number); %对含噪声信号进行512点的傅立叶变换 n=0:length(y)-1; f=fs/2*n/length(y)
第六章 MATLAB在信号分析与处理中的应用
信号及其表示
连续时间信号
离散时间信号
信号分析及处理
序列的操作
信号频谱分析 图像线性变换
6.1 信号及其表示
6.1.1 工具箱中的连续时间信号产生函数
功能 函数名
冲激串
函数名
功能
sawtooth 锯齿波或三角波信号 pulstran
square
2 1.5 1
x[n]
0.5
0
-0.5
-1 -4
-2
0
2
4
6
n
6.1.3 几种常用离散时间信号的表示
1.单位脉冲序列
1 (n n0 ) 0 n n0 n n0
直接实现: n=1:N; x=zeros(1,N); x(1,n0)=1; 2.单位阶跃序列
1 u ( n n0 ) 0 n n0 n n0
0
5
10
0
5
10
stem(n1,imag(x3))
0
5
10
0
5
10
图7 几种基本的离散信号
6.2 信号分析与处理
6.2.1 序列的操作 1. 信号加 x(n)=x1(n)+x2(n) MATLAB实现: x=x1+x2;
2. 信号乘
x(n)=x1(n) x2(n)
MATLAB实现:
x=x1.*x2;
1 0.5 0
-0.5
-1
0
0.002
0.004
0.006
0.008
0.01
图4 脉冲调制信号
例5. 列出单位冲激函数、单位阶跃函数、复指数函数等 连续信号的MATLAB描述
clear,t0=0;tf=5;dt=0.05;t1=1; t=[t0:dt:tf]; st=length(t); n1=floor((t1-t0)/dt); x1=zeros(1,st); x1(n1)=1/dt; x2=[zeros(1,n1-1),ones(1,st-n1+1)]; u=-0.5;w=10; x3=exp((u+j*w)*t);
n2
MATLAB实现: y=prod(x(n1:n2)); 7. 信号能量
Ex
n
x ( n)
2
MATLAB实现: y=sum(abs(x).^2);
1 8. 信号功率 Px N
n 0
N 1
x ( n)
2
MATLAB实现: y=sum(abs(x).^2)/N ;
例8 产生一个叠加信号,并计算它的抽样和、抽样积、 信号能量功率等。
6.2.2 信号频谱分析
将时域信号变换至频域加以分析的方法称为频
谱分析。
MATLAB频谱分析函数
y=fft(x),返回向量x的不连续fourier变换
信号频谱分析举例
例9 利用函数生成一组数据用以模拟电力现场测
量数据,并利用MATLAB编程实现其频谱分 析。其中,x=2 sin(2pif1t)+ sin(2pif2t), f1 = 100,f2 = 300。在信号x中加入随机信号, 用以模拟信号噪声。
t=(0:0.001:1)’;
x=sin(2*pi*50*t)+2*sin(2*pi*120*t);
y1=sum(x(1:50)); %抽样和
y2=prod(x(1:50)); %抽样积
Ex=sum(abs(x).^2); %信号能量 Px=sum(abs(x).^2)/length(x); %信号功率
3. 改变比例 y(n)=k*x(n) MATLAB实现: y=k*x; 4. 折叠y(n)=x(-n) MATLAB实现: y=fliplr(x); 5. 抽样和 y
n n1 n2
x ( n)
MATLAB实现: y=sum(x(n1:n2));
x(n) 6. 抽样积 y n n1
plot(t,real(x3)),grid
subplot(224) plot(t,imag(x3)),grid
0
0
2
4
-1
0
2
4
6
图5 几种基本的连续信号
6.1.2 离散时间信号的表示
例6. 绘制离散时间信号的棒状图。其中x(-1)=-1, x(0)=1, x(1)=2, x(2)=1, x(3)=0, x(4)=-1。 n=-3:5; %定位时间变量 x=[0,0,-1,1,2,1,0,-1,0]; stem(n,x); grid; line([-3,5],[0,0]); xlabel('n'); ylabel('x[n]') 图6 离散信号棒形图
灰度线性变换的MATLAB实现 MATLAB提供函数imadjust来完成灰度线性变换,其 Nhomakorabea
调用形式如下: Z=imadjust(x,[low_in high_in],[low_out high_out] x=imread('rice.tif'); z=imadjust(x,[0.3 0.5],[ 0 1]); subplot(121) imshow(x),title('原图像') subplot(122) imshow(z),title('灰度拉伸后图像')
图9 图像灰度拉伸前后对比
图像分段线性变换
分段线性变换指的是将待处理图像的灰度分割为
若干区间,对这些区间分别进行线性变换的操作。 假定原图像表示为g(x,y),现将图像的灰度范围分 割成三段:[0,a),[a,b),[b,255]。变换形式如下:
c a g ( x, y ) d c g ( x, y) a c g ( x, y ) b a 255 d 255 b g ( x, y ) b d 0 g ( x, y ) a a g ( x, y ) b b g ( x, y ) 255
1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 2 4 6 8 10 12 14 16 18 20
图1 方波
例2. 产生一个1.5s的50Hz的锯齿波,采样率10kHz. fs=10000; t=0:1/fs:1.5; x=sawtooth(2*pi*50*t); plot(t,x) axis([0,0.2,-1,1])
sinc chirp
方波信号
sinc函数波形 调频余弦信号
rectpule
tripuls vco
非周期的方波信号
非周期的三角波信号 电压控制振荡器
gauspuls
高斯正弦脉冲信号
gmonopuls 高斯单脉冲信号
例1. 产生一个方波,正信号40%
t=0:0.01:6*pi; x=square(t,40) plot(t,x) axis([0,20,-1.1,1.1])
5 0 -5 0 100 200 300 400 500 600