MATLAB: Usinf fft shift i need only to display the positive part of the spectrum

fftfourier transformplotplotting

I would like to display only the positive part of the frequency domain
if true
%
fs=1e5; %Sampling Frequency
t=0:1/(fs):0.001; %Time at which signal displays
%First,generating a signal
f=1e4;%Signal is 10kHz
amp_signal=1;
signal=amp_signal*(sin(2*pi*f*t));
%Frequency Domain of transmitted signal
transmited_signal_fft=fft(signal);
transmited_signal_fft=fftshift(transmited_signal_fft);
f_axis=linspace(-fs/2,fs/2,length(transmited_signal_fft));
%Plotting Signal
figure;
subplot(2,1,1);
plot(t,signal);
grid on;
title('Transmitted signal in time domain')
%Display transmitted signal in frequency domain
subplot(2,1,2);
plot(f_axis,abs(transmited_signal_fft)/length(signal));
grid on;
title('Transmitted signal in frequency domain')
end
Thanks in advance

Best Answer

Try this:
fs=1e5; %Sampling Frequency
t=0:1/(fs):0.001; %Time at which signal displays
%First,generating a signal
f=1e4;%Signal is 10kHz
Fn = f/2; % Nyquist Freqency (Added)
amp_signal=1;
signal=amp_signal*(sin(2*pi*f*t));
L = length(signal); % Added
%Frequency Domain of transmitted signal
transmited_signal_fft=fft(signal);
f_axis = linspace(0, 1, fix(L/2)+1)*Fn; % Changed

Iv = 1:length(f_axis); % Index Vector (Added)
% % transmited_signal_fft=fftshift(transmited_signal_fft); % (Commented-Out)
% % f_axis=linspace(-fs/2,fs/2,length(transmited_signal_fft)); % (Commented-Out)
%Plotting Signal
figure;
subplot(2,1,1);
plot(t,signal);
grid on;
title('Transmitted signal in time domain')
%Display transmitted signal in frequency domain
subplot(2,1,2);
plot(f_axis, 2*abs(transmited_signal_fft(Iv))/L); % Changed
grid on;
title('Transmitted signal in frequency domain')
See this version of the documentation for details: fft (link).
Related Question