Take the 2-minute tour ×
Code Review Stack Exchange is a question and answer site for peer programmer code reviews. It's 100% free, no registration required.

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:

  1. 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?

  2. 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'));
share|improve this question
    
If you want verification that the code is correct more information will be required. In particular encountered problems. –  Dennis Jaheruddin Dec 27 '12 at 15:44
add comment

1 Answer 1

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

    logspectrum = log(spectrum);

  2. 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.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.