Computing SNR of complex data

13 views (last 30 days)
Eric Michel
Eric Michel on 6 Jun 2014
I want to compute SNR of a complex 3D signal of the form: S=|A|exp(jP) were A is the magnitude and P is the phase of my data.
This data contains the object of interest on the middle of this volume while the rest of the voxels are miscalculations (noise plus error estimations) of both magnitude and phase.
(If you are familiar with MRI physics you may know what i mean by this)
This is what I have done to estimate SNR:
%----------Preparation:
s = S(ROI==1); % Get the signal values only from the ROI containing
% the object of interest (object voxels).
L = length(s(:)); % Get the number of (valid) voxels.
%************************************ START *****************************
% --- Check the signal power.
% Measure average power of the signal
Ps = sum(abs(s(:)).^2)/L;
% Measure the noise power
Pn = std(abs(s(:))).^2;
SNR = Ps/Pn; % SNR computation
SNRdB = 10*log10(SNR); %SNR in dB
Even though the obtained SNR lies in an expected value, I don't feel very confident with my computation. Anybody who wants to give me a feedback or correction about this implementation? Literature or references are also welcome ;)

Answers (0)

Categories

Find more on Biomedical Imaging 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!