how to generate sinusoid in matlab

Status
Not open for further replies.

moonnightingale

Full Member level 6
Joined
Sep 17, 2009
Messages
362
Helped
5
Reputation
10
Reaction score
5
Trophy points
1,298
Activity points
3,832
Hi i want to geenrate a sinusoid of .5 Khz with sampling frequency of 6 Khz
kindly help me to plot it

---------- Post added at 13:13 ---------- Previous post was at 12:42 ----------

ok i have written this code can anybody verify it

amp = 2; % Define the amplitude
freq_HZ = 500; % Define the frequency in Hertz
freq_RPS = 2*pi*freq_HZ; % Compute the frequency in rad/sec
t = 0:0.000166:1; % Define the sampling frequency
y = amp * sin(freq_RPS * t); % Compute y(t), the sine wave
plot(t,y) % Plot y vs. t
xlabel('Time (seconds)') % Label x-axis
ylabel('amplitude') % Label y-axis
title('Sinusoid of .5 Khz with fs=6Khz') % Give plot a title
grid % Turn on plot grid
figure
%plotting original signal with stem
stem(t,y)
 

Try that :

 

I made a quick generic fonction.
Parameters are :
1: signal frequency
2: amplitude
3: phase
4: sampling frequency
5: number of period to display


function [ ] = singen(freq, amp, phi, fs, nT)
clf;

T=nT/freq;
t=0:1/fs:T;

x=amp*sin(2*pi*freq*t+phi);

plot(t, x);
xlabel('Time (seconds)');
ylabel('Amplitude');
h = strcat({'Sinusoid of '}, num2str(freq), {'Hz with fs = '}, num2str(fs), {' Hz'});
title(h), grid on;
end
 

thanks andre.
but is there some problem in my code.

my book question says

DFT

(a) generate a sinusoid 05 .5 Khz with sampling freq 6 Khz
(b) plot the original signal using stem

I think first two parts are done. the third part says abt complex exponentials

can u also help me to write matlab code to compute its complex exponentials. This is related to DFT
thanks a lot
 

sin = e^jwt - e^-jwt
cos = e^jwt + e^-jwt

This is why the FFT of a sine wave generates significant content at Fc and (Fs-Fc). A complex input will have different magnitudes for at least some of the content in the frequencies between Fs/2 and Fs. (these correspond to -Fs/2 to 0).
eg:
Code:
f = sin(2*pi*100/1000 * [0:1023]);  % 1024 samples of 100hz sampled at 1khz
fd = f .* exp(-i*50/1000 * [0:1023]));  
fu = f .* exp(+i*50/1000 * [0:1023])); 
figure(); plot(20*log(abs(fft(f))));
figure(); plot(20*log(abs(fft(fd))));
figure(); plot(20*log(abs(fft(fu))));
in the above, you will see a peak near 100hz and near 900hz (aka -100Hz). The second plot, the peaks move to 50hz and 850Hz (aka -150Hz). the third plot moves the peaks to 150Hz and 950Hz (aka -50Hz). Also, in all three plots there will be more than just a single line -- 100 hz @ 1khz sampling rate doesn't end at a full cycle for 1024 samples. Thus it is not a basis vector (a frequency that exactly corresponds to a frequency bin).
 


Thanks Permute but is it matlab code to compute its complex exponentials of sinusoif of 0.5 Khz with sampling frequency of 6 Khz
 

Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…