ook的matlab,【伪技术】基于OOK的语音信号的数字传输

这篇博客详细介绍了如何对原始语音信号进行处理,包括读取、分割、调制、加噪、解调和错误率计算。使用了44.1kHz采样率的单声道wav文件,并通过调制和滤波技术实现信号传输,同时通过比较发送和接收信号来计算误码率。整个过程展示了数字通信中的关键步骤。
摘要由CSDN通过智能技术生成

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

Digital_Communication.m

这里面y是原始语音信号~yr是接收的语音信号~这里的Q2是单声道采样率为441000的wav文件~可以用wavplay函数来进行播放~~

y=wavread('Q2.wav');%读入信号

%test=zeros(1,length(y));%测试信号

yr=zeros(1,length(y));%接收信号

num=100;%将信号分100段发送

Rb=44100;%码率

fc=Rb*4;%载波频率

sample_num=10;%载波采样数目

Fs=fc*sample_num;%采样频率

multi=fc/Rb*sample_num;%采样频率比码率

y_q=y*2^15+abs(min(y)*2^15);

%%

N_error=0;%误码数目

for j=1:num

data=y_q(floor((j-1)*(length(y_q))/num)+1:floor(j*(length(y_q)/num)));%截取信号作为发送数

%(j-1)*floor((length(y))/num)+1

%j*floor((length(y))/num)

%test(floor((j-1)*(length(y))/num)+1:floor(j*(length(y)/num)))=data(1:end);

%data1=data*2^15;

%data2=data1+abs(min(data1));

dat_bin=dec_bin(data);%将信号量化为比特流

%dat_bin=[1 0 1 0 1 0 1 0 1 0];

dat_bin_i=logical(zeros(1,multi*length(dat_bin)));%插值

for i=1:length(dat_bin)

dat_bin_i((i-1)*multi+1:i*multi)=dat_bin(i);

end

%%

%调制

t=1/Fs:1/Fs:length(dat_bin_i)/Fs;

%产生载波并调制

Cr=sin(2*pi*fc*t);

S_d=dat_bin_i.*Cr;

%%

%加噪

An=0.3;

Noise=An*randn(size(S_d));

S_d=S_d+Noise;

%%

%解调

N=300; %滤波器的阶数为(N+1)

F=[0,fc-1000,fc+1000,Fs/2]*2/Fs;

A=[1,1,0,0];

lpf=firls(N,F,A);

dat_d=S_d.*Cr;%下变频

dat_f=conv(dat_d,lpf);%滤波

dat_temp=2*dat_f(N/2+1:N/2+length(dat_d)); %截断

dat_r=zeros(1,length(dat_bin));%抽取

dat_r=dat_temp(multi-5:multi:length(dat_temp));

dat_bin_r=dat_r>0.5;%判决

[Num1,Rat1]=biterr(dat_bin_r,dat_bin);%计算误码数

data_r=(bin_dec(dat_bin_r(1:end))-abs(min(y)*2^15))/2^15;

%dat_r=dat_temp

yr(floor((j-1)*(length(y))/num)+1:floor(j*(length(y)/num)))=data_r(1:end); N_error=N_error+Num1;

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值