matlab fm调制函数,求助 对语音信号进行FM调制与解调

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%设置参数%%%%%%%%%%%%%%%%%%%%%%%%%%%

clear all

close all

clc;

pf=0.1;                                %虚警概率为0.1

fs=48000;                               %采样频率为48K

%原始数据

[x1,fs] = audioread('voice_2.wav');

x= x1(:,2);%右声道

%sound(x,fs);%播放音频

%参数

N = length(x);%音频的采样数

n=0:N-1;

ts=1/fs;%时间间隔

t = 0:1/fs:(N-1)/fs;%时间

f=n*fs/N-1;

%对原始信号进行fft

Y = fft(x);

%Y0=fftshift(Y00)

%实信号fft的结果与[-fs/2, fs/2]对应,则要fft后fftshift一下即可,

%fftshift的操作是将fft结果以fs/2为中心左右互换;

% mag0 = abs(fftshift(Y));

%画图

figure(1)

subplot(211);

plot(t,x);

xlabel('t/s');

ylabel('幅值');

title('voice信号时域波形');

%绘制原始信号的振幅

subplot(212);

df=fs/length(Y) %计算谱线间隔

f=0:df:(fs/2-df) %频谱范围,截取前半段(抽样频率高于最大频率的2倍)

Yf=abs(Y)   %幅度

Yf=Yf(1:length(Yf)/2)   %截取一半

plot(f,Yf)   %音频信号频谱图

title('音频频谱图')

% plot(f,abs(Y));

% xlabel('频率(Hz)');

% ylabel('幅值');

% title('voice信号频谱图');

%% 调制FM

%*********************************************************************

fc = 4000;

KFM = 10;%调频指数

mt = x;

%beatFM = KFM*Am/wc;

beatFM = 5;

jifen(1)=0;  %求信号m(t)的积分

for i=1:length(t)-1

jifen(i+1)=jifen(i)+mt(i)*ts;

end

%%%%%%%%%%%%

ct = cos(2*pi*fc*t);

sig_fm = cos(2*pi*fc*t+2*pi*KFM*jifen);

fft_sig_fm = abs(fftshift(fft(sig_fm)));

% sound(sig_fm,fs);

nsfm=sig_fm;  %生成含高斯白躁声的已调信号(信号通过信道传输)

%%%%%%%%%%

figure(2)

subplot(311);

plot(t,mt);

xlabel('时间/s');

ylabel('幅值');

title('调制信号');

subplot(312);

plot(t,ct);

xlabel('时间/s');

ylabel('幅值');

title('载波信号');

subplot(313);

plot(t,sig_fm);

xlabel('时间/s');

ylabel('幅值');

title('已调信号');

%% 解调FM

%%解调

%*****************************************************

for i=1:length(t)-1                             %接受信号通过微分器处理

diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./ts;

end

diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)

zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;

d_m=diff_nsfmn-zero;

sound((d_m)',fs);

figure(3)

subplot(2,1,1);

%plot(t(1:end-1),d_m);

plot(t(1:end-1),d_m);

xlabel('时间/s');

ylabel('幅值');

但是,最后解调出来的不正确,听不到声音。哪里代码错了吗?求解答

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值