跪求:基于matlab的DSB调制解调程序!谢谢各位! dsb调制与解调仿真
DSB的调制与解调
1) 主程序
dt=0.001; %时间采样间隔
fm=1; %信源最高频率
fc=10; %载波中心频率
T=5; %信号时长
t=0:dt:T;
mt=sqrt(2)*cos(2*pi*fm*t); %信源
% N0=0.01; %白噪声单边功率谱密度
%DSB调制
s_dsb=mt.*cos(2*pi*fc*t);
B=2*fm;
% noise=noise_nb(fc,B,N0,t);
% s_dsb=s_dsb+noise;
figure(1)
subplot(3,1,1)
plot(t,s_dsb); %画出DSB信号波形
hold on
plot (t,mt,'r--'); %标出m(t)波形
title('DSB调制信号');
xlabel('t');
%DSB解调
rt=s_dsb.*cos(2*pi*fc*t);
[f,rf]=T2F(t,rt);
[t,rt]=lpf(f,rf,fm);
subplot(3,1,2)
plot(t,rt);
title('相干解调后的信号波形');
xlabel('t');
rt=rt-mean(rt);
subplot(3,1,3)
[f,sf]=T2F(t,s_dsb);
psf=(abs(sf).^2)/T;
plot(f,psf);
axis([-2*fc 2*fc 0 max(psf)]);
title('DSB信号功率谱');
xlabel('f');
2) 信号的傅里叶变换函数
function [ f,sf] = T2F(t,st)
dt=t(2)-t(1);
T=t(end);
df=1/T;
N=length(st);
f=-N/2*df:df:N/2*df-df;
sf=fft(st);
sf=T/N*fftshift(sf);
end
3) 低通滤波函数
function [ t,st] = lpf( f,sf,B)
df=f(2)-f(1);
T=1/df;
hf=zeros(1,length(f));
bf=[-floor(B/df):floor(B/df)]+floor(length(f)/2);
hf(bf)=1;
yf=hf.*sf;
[t,st]=F2T(f,yf);
st=real(st);
end
4) 高斯白噪声函数
function [ out ] = noise_nb( fc,B,N0,t )
dt=t(2)-t(1);
fmx=1/dt;
n_len=length(t);
p=N0*fmx;
rn=sqrt(p)*randn(1:n_len);
[f,rf]=T2F(t,rn);
[t,out]=bpf(f,rf,fc-B/2,fc+B/2);
end
5) 信号的反傅里叶变换函数
function [t,st] =F2T(f,sf )
df=f(2)-f(1);
fmx=(f(end)-f(1)+df);
dt=1/fmx;
N=length(sf);
T=dt*N;
t=0:dt:T-dt;
sff=fftshift(sf);
st=fmx*ifft(sff);
end
数据自己改动
如何用matlab进行vsb的调制
幅度调制 AM 信号输出和功率谱 程序清单
dt=0.001; %时间采样频谱
fmax=1; %信源最高频谱
fc=10; %载波中心频率
T=5; %信号时长
N=T/dt;
t=[0:N-1]*dt;
mt=sqrt(2)*cos(2*pi*fmax*t); %信源
A=2;
s_am=(A+mt).*cos(2*pi*fc*t);
[f,Xf]=FFT_SHIFT(t,s_am); %调制信
MATLAB仿真 BPSK调制解调器
clc;
clear;
fc=4800;fs=12000;fb=2400;
%要调制的数字信号
a=randint(1,12,2);%随机产生12个“0”,“1”
s=zeros(1,60);
for i=1:12
for j=1:5
if(a(i)==0)
s(j+(i-1)*5)=0;
else
s(j+(i-1)*5)=1;
end
end
end
plot(s);xlabel('基带信号');
figure
pwelch(s);%功率谱
figure
%波形成形滤波器(平方根升余弦滚降)
h=firrcos(14,1200,1200,4800,'sqrt');
figure
stem(h);xlabel('成形滤波器的单位冲击响应');
[H,W]=freqz(h,1);
H=abs(H);
figure
plot(H);xlabel('成形滤波器的频率响应');
s=fftfilt(h,s);
figure
plot(s);xlabel('通过成形滤波器后的基带信号');
figure
pwelch(s);%经波形成形滤波器后的功率谱
%已调信号
e=dmod(a,4800,2400,12000,'psk',2);%调制
figure
plot(e);xlabel('已调信号');
enoise=e+randn(1,60);%enoise=e+.1*randn(1,60)不同功率的高斯白噪声
aa=ddemod(enoise,4800,2400,12000,'psk',2);%解调
figure
stem(aa);xlabel('解调后的数字信号');%解调后的数字信号
p=symerr(a,aa)/12 %误码率
%误码率曲线
figure
r=-6:3:12;
rr=10.^(r/10);
pe1=1/2*exp(-rr);%相干解调的误码率曲线
hold on
plot(r,pe1,'r');grid on;
pe2=(1-1/2*erfc(sqrt(rr))).*erfc(sqrt(rr));%差分相干解调的误码率曲线
plot(r,pe2,'b');xlabel('bpsk,dpsk误码率曲线');
set(gca,'XTick',-6:3:18);
你好,,请问有基于MATLAB的AM调制与解调的程序吗?谢谢了
AM信号的调制解调MATLAB程序
clc
clear all
close all
Fs=100000;%sample frequency采样频率
Fc=1000;% carrier frequency载波频率
Ts=0.1; % sample time 抽样时间
Ns=Fs*Ts; %length of signal信号总长度
t=0:1/Fs:(Ns-1)/Fs;
A0=3; %A0=3,满调幅;A0<3,过调幅情况
for snr=-5:5
g1=2*cos(2*pi*50*t);
% g1=3*cos(50*pi*t).*cos(50*pi*t);
% g2=0;
g2=cos(2*pi*20*t);
% g2=3*sin(pi*100*(t-0.05))./(pi*100*(t-0.05));
g=g1+g2;%原始调制信号
figure(1)
subplot(2,1,1)
plot(g)
x=ammod(g,Fc,Fs,0,A0);%已调AM信号
subplot(2,1,2)
plot(x)
x1=hilbert(x);
x1=awgn(x,snr); %按照信噪比加入高斯白噪声
y = x1(:);
t = (0 : 1/Fs :(size(y,1)-1)/Fs)';
t = t(:, ones(1, size(y, 2)));
z = y .* cos(2*pi * Fc * t );
[num,den] = butter(5,Fc*2/Fs); %设计低通滤波器
for i = 1 : size(y, 2)
z(:, i) = filtfilt(num, den, z(:, i)) * 2;
end
xx=z-A0;
figure(2)
plot(g)
hold on
plot(xx,'g')
hold off
end