How to Show A OFDM Symbol's PSD in Matlab I'm trying to suppress the sidelobe of OFDM but having troubles showing its spectrum in Matlab. After IFFT, I get a time-domain signal, but in which way I can get its spectrum(or PSD)? I want to analyze the out band power emission, with rectangle window in the time domain the out of band power curve decrease slowly, so it may interference the adjacent channel user, to avoid that situation we have to apply some algorithms to suppress the out of band power emission caused by the sidelobe of OFDM signal. After apply the algorithm I have to plot some figures to demo the effect of my algorithm, so I need the whole PSD of OFDM signal and I also want the out of band part become more steep. I tried to use FFT and pwelch function of Matlab, but never get what I want. I doubt if I use them in right way. So I'm hoping someone here can help me. I know it's basic, but it really obsess for a long time. I analyze the baseband signal, so it should be after the IFFT operation.The figure that I want is below. 



My matlab code:

  N = 64;
  over_sample_factor = 2;
  M = N*over_sample_factor;
  Mod = 16;
  symbol = 1;
  bitlength = N*log2(Mod)*symbol;
  itr_num = 1000;
  fft_len = 2*M;
  signal_freq = zeros(itr_num,fft_len);
  for itr = 1:itr_num
      bit_data = randi([0,1],bitlength,1);
      h = modem.qammod('M', Mod, 'SymbolOrder', 'Binary', 'InputType', 'Bit');
      zp_before = modulate(h,bit_data);
      after_zp = zeros(1,M);
      after_zp(1:N/2) = zp_before(N/2+1:N);
      after_zp(M-N/2+1:M) = zp_before(1:N/2);
      ofdm_symbol = ifft(after_zp);
      signal_freq(itr,:) = abs(fft(ofdm_symbol,fft_len)).^2; 
  end
  PSD_mean = mean(signal_freq,1);
  plot(fftshift(10*log10(PSD_mean)));


The figure is like this
If you are looking at the sidelobes in particular then you will probably want to oversample, as Deve mentioned.  x2 oversampling should be sufficient, but you can do more if you want.  I generally plot my FFT's as follows to get the energy in a dB scale (Matlab syntax)-

plot(20*log10(abs(fft(dataVector))))


or, to center the FFT visually-

plot(fftshift(20*log10(abs(fft(dataVector)))))