Finding the Square root of a signal using matlab and C language with out using sqrt function
8 views (last 30 days)
Show older comments
I am using Sqare Law demodualtor For AM Demodulation.
i am getting two terms 1)m^2(t)/2
2)cos(4*pi*Fc*T)
first applyig LPF so that High Frequencies will eliminate,what should i need to get exact m(t) from the m^2(t)...becuase i have to transform the Matlab code to C code also and i should get the same m(t) after executing the program in C Code also...
F_Sample=48000
F_Carrier=12500
input signal is an audio signal....
0 Comments
Answers (1)
Corentin OGER
on 3 Dec 2019
Edited: Corentin OGER
on 3 Dec 2019
Hello,
I'm not sure why you can't use a square root in C, do you not have a C library like "math.h" that includes square root? (I never code in C)
Sometimes, when I need to "emulate" a ressource-heavy function (to run on a real-time machine with limited ressources), I simply use a look-up table with linear interpolation (you can even make your own interpolation function).
Something like this very crude version (for input between 0 and 100):
function [ Out ] = DirtySqrt( In )
TableX = [0 0.2 0.4 1 2 4 10 20 40 100]; %Very Coarse values 0=>100
TableY = [0 0.4472 0.6325 1 1.4142 2 3.1623 4.4721 6.3246 10]; %Pre-caluclated
%they could be globals initialized at Startup, or passed to the function as arguments
In = abs(In); %absolute value
Out = interp1(TableX, TableY, In); %You can make your own interp function
end
>> DirtySqrt(-9)
ans =
2.9686
For example, if it's just to evaluate the RMS power of a wave, you don't necessarily need great accuracy.
A larger look-up table (thousands of values) could also be stored in a file and loaded at startup.
0 Comments
See Also
Categories
Find more on Startup and Shutdown 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!