Deconvolution of system output signal using Deconv

조회 수: 8 (최근 30일)
Asli Memmet
Asli Memmet 2018년 12월 22일
편집: Andika 2025년 7월 10일
I want to recover the message signal by deconv() . the program takes system input(the message) and the impulse response and it convolutes them. However, the ouput signal(result of convolution) is then affected by a noise (sigma*randn(1,length(output_signal))) afterwards.
The target is to recover/restore the original message by using Deconv() function.
The problem is Deconv() returns a single float number i.e a point not the original message .
note : I tested the code the output signl is perfectly plotted however things don't work after that.
I need help!
What I have tried
Y = conv(signals, responses,'same');
% signals is a vector of signals that respresent the message.
% responses is a vector of signals that respresent the impulse response.
% both are user inputs.
sigma = 1;
noise = sigma*randn(1,length(Y));
Y = Y + noise;
[recovered_message, r] = deconv(Y, signals);
plot(recovered_message);

답변 (3개)

Yasir Ahmed
Yasir Ahmed 2019년 11월 16일
Please see the code below.
%%%%% QPSK Modulation %%%%%
clear all
close all
symbols=5;
Ns=20;
Eb=sqrt(2);
EbNo=10;
s=([ones(1,Ns)]')*([1+i,-1+i,-1-i,1-i,1+i]);
s=s(:);
s=transpose(s);
plot(s,'bo-');hold on
h=[1.30,0.05,0.34,-0.03,0.40];
r=conv(s,h);
sigma=sqrt(Eb/(2*EbNo));
r=r+sigma*(randn(1,length(r))+i*randn(1,length(r)));
plot(r(1:symbols*Ns),'r*')
[s_est,R]=deconv(r,h);
plot(s_est,'g+');hold off
xlabel('In-phase')
ylabel('Quadrature')
legend('Tx','Rx','Eq')
For complete discussion see the comments section of the following post.

Alessio Lodato
Alessio Lodato 2021년 5월 21일
Dear Yasir,
how can i contact you, i have a similar problem.
Thank you,
A

Andika
Andika 2025년 7월 10일
편집: Andika 2025년 7월 10일
Since R2023b, you can use the deconv function and specify the Method name-value argument as "least-squares".
For example, you can do:
Y = conv(signals,responses,"same");
sigma = 1;
noise = sigma*randn(1,length(Y));
Y = Y + noise;
[recovered_message,r] = deconv(Y,responses,"same",Method="least-squares");
plot(recovered_message);

카테고리

Help CenterFile Exchange에서 MATLAB에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by