二元固定信道(BSC)信道的MATLAB实现
发布日期:2021-05-07 14:37:54 浏览次数:29 分类:原创文章

本文共 1449 字,大约阅读时间需要 4 分钟。

二元固定信道(BSC)信道参数p(转移概率)如图所示:

其中错误转移概率为p,正确转移概率为1-pp(0|0)=1-pp(1|0)=pp(0|1)=pp(1|1)=1-p

现通过MATLAB编程实现该信道,由于该信道的转移特性与输入输出特性可知,该信道可通过一个二元信源与一个同维的仅含0或1的矩阵通过以概率p进行异或操作实现0。此函数可以采用两种方法编写,一种方法是将图片转换为列向量或者行向量与同维的矩阵异或;另外一种方法为与同维矩阵直接异或,无需转换。

信道函数如下,函数1:

function [A] = MYBSC1(I,p)%MYBSC1 bsc信道函数%   I-输入的二值图像或0,1矩阵;p-BSC信道参数[m,n]=size(I);I=reshape(I,m*n,1);   %二值矩阵转为列向量x=rand(m*n,1);for i=1:m*n    if x(i)<p        x(i)=1;    else        x(i)=0;    endendA=xor(I,x);A=reshape(A,m,n);   %列向量转为二值矩阵end

函数2:

function [ A ] = MYBSC2(I,p)%MYBSC2 bsc信道函数%   I-输入的二值图像或0,1矩阵;p-BSC信道参数[m,n]=size(I);x=rand(m,n);for i=1:m    for j=1:n        if x(i,j)<p            x(i,j)=1;        else            x(i,j)=0;        end    endendA=xor(I,x);end

接下来,通过MATLAB的系统函数与自己编写的函数进行对比验证,测试程序为:

clcclear allPic=imread('star.jpg');Pi_gray=rgb2gray(Pic);   %灰度化thresh=graythresh(Pi_gray);   %灰度阈值Pi_2=im2bw(Pi_gray,thresh);   %二值化Pi_2=im2double(Pi_2);        %将逻辑值转换为双精度Pi_01=bsc(Pi_2,0.01);       %经过bsc信道(系统函数)MyPi1=MYBSC1(Pi_2,0.01);    %自写函数  MyPi2=MYBSC2(Pi_2,0.01);figuresubplot(2,2,1);imshow(Pic,[]);title('原图');subplot(2,2,2);imshow(Pi_gray,[]);title('灰度图');subplot(2,2,3);imshow(Pi_2,[]);title('二值图');subplot(2,2,4);imshow(Pi_01,[]);title('经过p=0.1bsc信道');figuresubplot(2,2,1);imshow(Pic,[]);title('原图');subplot(2,2,2);imshow(Pi_gray,[]);title('灰度图');subplot(2,2,3);imshow(MyPi1,[]);title('经过信道1,p=0.01');subplot(2,2,4);imshow(MyPi2,[]);title('经过信道2,p=0.01');

程序运行结果如下:

通过经过相同参数的BSC信道后的三幅图片的对比可知,编写的信道函数符合BSC信道。

上一篇:二元对称信道输入二值图像仿真
下一篇:验证离散傅里叶变换(DFT)的频域循环移位定理

发表评论

最新留言

感谢大佬
[***.8.128.20]2025年04月03日 15时03分10秒