Deconvolution of system output signal using Deconv
Show older comments
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);
Answers (3)
Yasir Ahmed
on 16 Nov 2019
0 votes
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
on 21 May 2021
0 votes
Dear Yasir,
how can i contact you, i have a similar problem.
Thank you,
A
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);
Categories
Find more on Signal Generation, Analysis, and Preprocessing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!