1. 利用Matlab产生下列连续信号并作图。
%(1)代码如下
t = -1 : 0.01 : 5;
x = -2 * ((t - 1) >= 0);
plot(t, x)
axis([-1 5 -3 1])
%(2)代码如下
t = 0 : 0.01 : 200;
x = cos(0.1 * pi * t).*cos(0.8 * pi * t);
plot(t, x)
axis([0 200 -2 2])
运行结果:
(1)
(2)
2. 利用Matlab产生下列离散序列并作图。
%(1)代码如下
k = -14 : 15;
x = (-5 <= k & k <= 5);
stem(k, x)
axis([-14 15 -1 2])
%(2)代码如下
k = -19 : 20;
x = (0.9.^k).*(sin(0.25 * pi * k)+cos(0.25 * pi *k));
stem(k, x)
axis([-20 21 -15 10])
运行结果:
(1)
(2)
3.已知序列x[k] = [1, 2, 0, -1, 3, 2; k = -2, -1, 0, 1, 2, 3],h[k] = [2, 3, -1, 0, 2, 1; k = -2, -1, 0, 1, 2, 3]
%(1)代码如下
k = [-2 -1 0 1 2 3];
x = [1 2 0 -1 3 2];
h = [-2 3 -1 0 2 1];
y = conv(x,h);
stem((0:length(y)-1),y)
%(2)代码如下
k = [-2 -1 0 1 2 3];
x = [1 2 0 -1 3 2];
h = [-2 3 -1 0 2 1];
y = conv(x,h);
stem((0:length(y)-1),y)
a = xcorr(x,y);
m = (length(a) -1)/2;
stem((-m:m),a)
运行结果:
(1)
(2)
4、音频去噪:
[datal,fs] = audioread("yinpin.mp3");
time = (1:length(datal))/fs;%计算播放时间
subplot(2, 1, 1);
plot(time, datal);%绘制yk波形
M = 50;
b = ones(M,1)/M;
a= 1;
yk = filter(b, a, datal);
subplot(2, 1, 2);
plot(time,yk)
运行结果:
5、绘制信号的时域波形和频谱:
[datal,Fs] = audioread("yinpin.mp3");
subplot(2, 2, 1);
plot(datal);
datal = datal(:,1);
datal = datal';
N = length(datal);%求取抽样点数
t1 = (0:N-1)/Fs;%显示实际时间
y1 = fft(datal);%对信号进行傅里叶变换
f1 = Fs/N*(0:round(N/2)-1);%显示实际频点的一半,频域映射,转化为HZ
subplot(2, 2, 2);
plot(t1,datal,'g');%绘制时域波形
xlabel('时间/s');ylabel('幅值');
title('信号的波形');
subplot(2, 2, 3);
plot(f1,abs(y1(1:round(N/2))));
xlabel('频率/Hz');ylabel('幅值');
title('信号的频谱');
运行结果: