Matlab 使用BPSK传输图像

Matlab 使用BPSK传输图像,matlab,signal-processing,communication,modulation,Matlab,Signal Processing,Communication,Modulation,需要对输入图像进行调制和传输,最后使用BPSK进行检测 M = 2; %Modulation order 2 for BPSK randn('state',200); % initializing the randn() function imdata = imread('lenna.pgm'); bdata = de2bi(imdata); sizec = size(bdata,1); % height sizer = size(bdata,2);

需要对输入图像进行调制和传输,最后使用BPSK进行检测

M = 2; %Modulation order 2 for BPSK 
randn('state',200); % initializing the randn() function
imdata = imread('lenna.pgm'); 
bdata = de2bi(imdata);         
sizec = size(bdata,1);         % height
sizer = size(bdata,2);         % width
nbits = sizec*sizer;            % number of bits in the image
msg = double(reshape(bdata,nbits,1));
下面的代码用于调制输入图像并显示解调后的输出。当我运行代码时,得到的结果输出是一个空白图像。需要帮助找出我遗漏了什么或哪里出了问题

%modulate
txpsk = pskmod(msg,M);

%noise
phasenoise = randn(nbits,1)*0.015;
rxpsk = txpsk.*exp(2i*pi*phasenoise);

%demodulate
recovpsk = pskdemod(rxpsk,M);
reshape1rxpsk = reshape(recovpsk,sizec,sizer);
reshape2rxpsk = bi2de(reshape1rxpsk);
finalout= reshape(reshape2rxpsk,size(imdata,1),size(imdata,2));
imshow(finalout)

PGM文件由一个或多个PGM图像序列组成。每幅图像都有一个标题结构,包含宽度、高度等信息。调制后,您会在信号中添加噪声。因此,解调信号可能包含错误。如果此错误损坏图像的标题信息-这可能会导致空白图像输出。试着注释行

%phasenoise = randn(nbits,1)*0.015;
%rxpsk = txpsk.*exp(2i*pi*phasenoise);

我认为你的问题太宽泛了。请阅读并了解如何最大限度地提高您获得有用答案的机会。注释行对输出没有影响。@pybear请尝试比较imdata和finalout,以及bdata和REPLAGE1RXPSK。类似于sum(imdata fianlout)。