数字信号处理的matlab实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字信号处理的matlab实现
简谐振动的特性完全取决于振幅、频率、初相位角。
x1 = (0.5).^t;
x1 = 0.5* sin(2*pi*f*t+pi/4);
x1 = [(n - n0) >= 0]; %阶跃信号
x1 = [(n-n0) == 0]; %脉冲信号
y = sin(pi * x +eps)./(pi * x +eps);%sinc function,eps是matlab系统的精度,这里防止被零除
n = [-10:10];
alpha = -0.1 + 0.3 * j;
x = exp(alpha * n);%复指数信号
rx = real(x);
ix = imag(x);
mx = abs(x); %振幅
px = (180/pi) * angle(x); % 相位,并转换为度
x = rand(1,10);
x = randn(1,10); %guass series numbers
xp = [x x x x x];
x2 = fliplr(x);%左右折叠
第二章信号
%test sampling rule
dt = 0.01; %samping frequence for draw 100Hz
t = 0:dt:1;
f = 10;
x = sin(2 * pi * f * t + 0.3);
dt1 = 0.1; t1 = 0:dt1:1;%10Hz
x1 = sin(2 * pi * f * t1 + 0.3);
dt2 = 0.05; t2 = 0:dt2:1;%10Hz
x2 = sin(2 * pi * f * t2 + 0.3);
subplot(3,1,1), plot(t, x);
title('f = 10Hz, fs = 100Hz');
subplot(3,1,2), plot(t1, x1), hold on, stem(t1, x1), plot(t, x);
title('f = 10Hz, fs = 10Hz');
subplot(3,1,3), plot(t2, x2), hold on, stem(t2, x2), plot(t, x);
title('f = 10Hz, fs = 20Hz');
基本信号:
x1 = (0.5).^t; %指数信号
x1 = 0.5* sin(2*pi*f*t+pi/4); %余弦信号
x1 = [(n - n0) >= 0]; %阶跃信号
x1 = [(n-n0) == 0]; %脉冲信号
y = sin(pi * x +eps)./(pi * x +eps);%sinc function,eps是matlab系统的精度,这里防止被零除,sinc函数信号
n = [-10:10];
alpha = -0.1 + 0.3 * j;
x = exp(alpha * n);%复指数信号
rx = real(x);
ix = imag(x);
mx = abs(x); %振幅
px = (180/pi) * angle(x); % 相位,并转换为度x = rand(1,10); %随机信号
x = randn(1,10); %高斯随机序列
xp = [x x x x x]; %复制
信号运算:
时移,倒置,
尺度改变x2 = fliplr(x);%左右折叠
信号加
信号微分和积分
% test2 微分和积分
clear all; clc;
dt = 0.01; t = 0:dt:4*pi;
y = sin(t);
y1 = diff(y)/dt; % 微分,dt为采样间隔
for ii = 1:length(y) %积分,dt为采样间隔
y2(ii) = sum(y(1:ii)) * dt;
end
subplot(3,1,1), plot(t, y);
subplot(3,1,2), plot(t, [0 y1]); %微分后信号比原信号少一个元素,用零补
subplot(3,1,3), plot(t,y2);
grid on;
xlabel('Time/s');
ylabel('Amplitude');
信号乘
注意:若参与信号乘的两个信号长度不一样,则必须进行转换之后才能在matlab中进行操作。
% test3 信号乘,滤波器滤波。注意振幅谱的绘制方法
clear all; clc;
dt = 0.02; df = 1/(6000 * dt);% 采样间隔为0.02s,则2min内数据个数为6000,df为信号频率分辨率n = 0:2999; %折叠频率之前(取前3000个)数据进行操作
f = n * df; %给出频率序列
sig = rand(1, length(n)); % 运用随机函数产生信号振幅谱
filt = [ones(1, 5/df), zeros(1, (length(n) - 5/df))]; % 理想滤波器幅频响应函数
subplot(3,1,1), plot(n * df, sig);
subplot(3,1,2), plot(n * df, filt, 'LineWidth', 3);
subplot(3,1,3), plot(n * df, sig .* filt);