ook的matlab,【伪技术】基于OOK的语音信号的数字传输
该楼层疑似违规已被系统折叠隐藏此楼查看此楼Digital_Communication.m这里面y是原始语音信号~yr是接收的语音信号~这里的Q2是单声道采样率为441000的wav文件~可以用wavplay函数来进行播放~~y=wavread('Q2.wav');%读入信号%test=zeros(1,length(y));%测试信号yr=zeros(1,length(y));%接收信号num=1.
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
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
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)