【通信原理】【实验】实验五:信道编码译码思路
思路:
函数:
归一化:
- [-1, 1]
方法1(通用公式):
step1:(x-min)/(max-min);取值范围变成了[0,1]
step2:(x-min)/(max-min)(b-a);取值范围变成了[0,b-a]
step3:(x-min)/(max-min)(b-a)+a;取值范围变成了[a,b]
代入>a = -1,b = 1;
化简
2 * (x-min)/(max-min) -1;
- [0, 1]
方法1(通用公式):
step:1(x-min)/(max-min);取值范围变成了[0,1]
step2:(x-min)/(max-min)(b-a);取值范围变成了[0,b-a]
step3:(x-min)/(max-min)(b-a)+a;取值范围变成了[a,b]
代入 a = 0,b = 1;
化简:
(x-min)/(max-min);
读取音频
clear;
clc;
% 读取音频信号
path = 'C:\Users\HP\Desktop\学习\课内\通信原理\实验\实验5\marriag_7s.wav';
[y, fs] = audioread(path); % 获取音频信号和采样频率
% 音频信号归一化处理范围[-1 1]
n_audio = 2 * (y - min(y))/(max(y) - min(y)) - 1; % n = normalization归一化
% 播放归一化后音频
% sound(n_audio, fs);
% 获取音频采样点数目
a_len = length(n_audio);
f = (0:a_len -1) / a_len * fs;
% 画频谱
figure('name', '归一化后语音信号');
subplot(2, 1, 1);
plot(n_audio);
axis([0 a_len-1 -1 1]);
title('------时间域波形');
subplot(2, 1, 2);
f_n_audio = fft(n_audio,a_len);
f_n_audio_abs = abs(f_n_audio);
title('------频域谱波形');
plot(f, f_n_audio_abs);
title('发送方语言信号频域波形');
信道编码
% 信道编码:将PCM编码后的码元每四个码元后面添加上3个监督为,构成码组
% 信道编码
n = 7;
k = 4;
r = n - k;
len_spx = length(stra_pam_x);
% 矩阵
Q = [1,1,1;
1,1,0;
1,0,1;
0,1,1];
G = [eye(k),Q]; % 生成矩阵
H = [Q',eye(r)]; % 监督矩阵
c_x = zeros(n, len_spx / k);
% 将[a6 a5 a4 a3]*G = [a6 a5 a4 a3 a2 a1 a0]
for i = 1:len_spx/k % 将总pcm编码后的码元总长度/4可以得到码组
perGroup = stra_pam_x((i-1)*k+1:i*k)*G;% 求组
c_x(:,i) = (mod(perGroup,2 )).'; % 按列存最后转置为行取模相当于异或
end
c_x1 = c_x(:)'; % 按照列排列,拉长成一个行向量
信道译码
参数和函数
参数介绍
- 函数
- audioread(path) %读取音频
- sound(n_audio, fs) % 播放
- mod(x,2) % 取模运算
- kron() % 扩采样
- conv() % 时域上卷积
- awgn() % 高斯白噪声
- audioplayer(),play() % 这两个函数配合使用读取音频
-
参数
-
n_audio:归一化后音频信号
-
pcm_x:pcm编码 shape = a_len x 8
-
a_len :音频长度
-
stra_pam_x:将pcm 编码后信号拉直一维度向量
-
len_spx:一维度向量的长度
-
Q:校验矩阵,信息位
-
G:生成矩阵G = [eye(k),Q]; % 生成矩阵
-
H:监督矩阵H = [Q’,eye®]; % 监督矩阵
-
c_x:将每8个码元中每4个码元为一组进行存储的矩阵
-
c_x1:双极性码元
-
modemWave1:添加噪声后的信号(高斯白噪声)
-
recBit:抽样判决存储矩阵
-
s1s2s3:将二进制转化为十进制错误码元位置[7 6 4 5 3 2 1]并非按照顺序;
-
rev_per:现在是接受端每7个码元代表之前的4个码元
-
syn:校验子 .将码组的校验子求出来
-
根据校验子判断是哪个码元出现错误,并进行纠正
-
decode( k+1:n , : ) = []:丢弃监督码元,剩下的就是原始码元,在将矩阵进行拉直装置;
-
代码:
本文来自博客园,作者:jucw,转载请注明原文链接:https://www.cnblogs.com/Jucw/p/16216550.html