HiveBrain v1.2.0
Get Started
← Back to all entries
patternMinor

Calculate FFT from windowed time-based signal

Submitted by: @import:stackexchange-codereview··
0
Viewed 0 times
signalffttimecalculatebasedfromwindowed

Problem

I have a time-based signal (Raw signal) sampled at 6 MHz and need to analyze it in freq. domain.
I'm learning DSP and this is very first time I work with DSP. Could you please help to check if this code is correct or not. And I have couple of questions needed to be clarify:

-
I've heard about linear scale and logarithm scale in order to observe the amplitude easier. Could you please explain to me, in this case, how can I get the logarithm scale?

-
for some function in Matlab (for example fft, spectrogram, etc), how can I get the code (just in case I want to change something to adapt my need)?

input=V5k_a100;  
N=2048;     L=4096;    Fs=6e6;  
spectrumTemp=[];

for index=1:length(input)/L  
  slice = input(1+(index-1)*L:index*L);  
  abcd = hann(L) .* slice;  
  NFFT = 2^nextpow2(N);  
  spectrumTemp(index, :) = fft(abcd, NFFT)/L;  
end

f = [0:NFFT-1]*Fs/NFFT;  
freq = f(1:length(f)/2);  
time = [0:length(input)/L-1]*L/Fs;  
spectrum = spectrumTemp(:, 1:length(f)/2);  
mesh(time,freq',abs(spectrum'));

Solution

-
The easy way to plot something with a logarithmic scale would be to just take the logarithm of the variable.

logspectrum = log(spectrum);

-
The source of some files is available when you type edit function name, example:

edit unique

However, not all Matlab source is available, so unfortunately you cannot customize everything this easily.

Context

StackExchange Code Review Q#15208, answer score: 2

Revisions (0)

No revisions yet.