sine wave with frequency up to 1MHz
31 views (last 30 days)
Show older comments
Alhassane Sylla
on 5 Dec 2024 at 18:06
Commented: Alhassane Sylla
on 5 Dec 2024 at 21:40
I am trying to generate a sine wave with a frequency up to 1MHz, my code below can work for a frequency up to 300kHz, for frequency above no wave is generated, can someone help please? here is my code and screeshot.
sig_amp = 2.8; %amplitude
fs = 1e+6; %signal frequency Hz
sampleRate = 1e+6;
numSamplesPerCycle = floor(sampleRate/(fs));
T = 1/(fs); %sampling period
timestep = T/numSamplesPerCycle;
t = (0 : timestep : 5-timestep)';
x = sig_amp*sin(2*pi*fs*t)';
plot(t,x,'.-');
s.queueOutputData(x');
xlabel('temps (s)');
ylabel('Tension de sortie (V)');
title('Signal versus Time');
grid on
zoom xon;
s.ScansQueued
0 Comments
Accepted Answer
Subhajyoti
on 5 Dec 2024 at 19:45
It is my understanding that you are trying to plot a sine wave with a frequency up to 1MHz.
According to the Nyquist–Shannon sampling theorem, the sample rate must be at least twice the bandwidth of the signal to avoid aliasing, a type of distortion that occurs when the sample rate is too low.
Here, in the following implementation, I have increased the sampling rate for better resolution.
sig_amp = 2.8; %amplitude
fs = 1*1000*1000; %signal frequency Hz
sampleRate = 4*1000*1000;
numSamplesPerCycle = floor(sampleRate/(fs));
T = 1/(fs); %sampling period
timestep = T/numSamplesPerCycle;
t = (0 : timestep : 5-timestep)';
x = sig_amp*sin(2*pi*fs*t)';
plot(t,x,'.-');
xlabel('temps (s)');
ylabel('Tension de sortie (V)');
title('Signal versus Time');
grid on
3 Comments
More Answers (0)
See Also
Categories
Find more on Waveform Generation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!