1. 首页 > 科技

跪求:基于matlab的DSB调制解调程序!谢谢各位! dsb调制与解调仿真

跪求:基于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