【通信原理】【实验】实验五:信道编码译码思路

思路:
在这里插入图片描述函数:
在这里插入图片描述

归一化:

  • [-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(:)'; % 按照列排列,拉长成一个行向量

信道译码

参数和函数

参数介绍

  • 函数
  1. audioread(path) %读取音频
  2. sound(n_audio, fs) % 播放
  3. mod(x,2) % 取模运算
  4. kron() % 扩采样
  5. conv() % 时域上卷积
  6. awgn() % 高斯白噪声
  7. audioplayer(),play() % 这两个函数配合使用读取音频
  • 参数

    1. n_audio:归一化后音频信号

    2. pcm_x:pcm编码 shape = a_len x 8

    3. a_len :音频长度

    4. stra_pam_x:将pcm 编码后信号拉直一维度向量

    5. len_spx:一维度向量的长度

    6. Q:校验矩阵,信息位

    7. G:生成矩阵G = [eye(k),Q]; % 生成矩阵

    8. H:监督矩阵H = [Q’,eye®]; % 监督矩阵

    9. c_x:将每8个码元中每4个码元为一组进行存储的矩阵

    10. c_x1:双极性码元

    11. modemWave1:添加噪声后的信号(高斯白噪声)

    12. recBit:抽样判决存储矩阵

    13. s1s2s3:将二进制转化为十进制错误码元位置[7 6 4 5 3 2 1]并非按照顺序;

    14. rev_per:现在是接受端每7个码元代表之前的4个码元

    15. syn:校验子 .将码组的校验子求出来

    16. 根据校验子判断是哪个码元出现错误,并进行纠正

    17. decode( k+1:n , : ) = []:丢弃监督码元,剩下的就是原始码元,在将矩阵进行拉直装置;

代码:

posted @ 2022-05-02 19:40  jucw  阅读(236)  评论(0编辑  收藏  举报