sine wave plot

2.997 visualizaciones (últimos 30 días)
aaa
aaa el 24 de Abr. de 2012
Respondida: Ranjita el 30 de Sept. de 2024
Hi,
I am having some trouble plotting a sine wave and i'm not sure where i am going wrong.
i have
t = [0:0.1:2*pi]
a = sin(t);
plot(t,a)
this works by itself, but i want to be able to change the frequency. When i run the same code but make the change
a = sin(2*pi*60*t)
the code returns something bad. What am i doing wrong? How can i generate a sin wave with different frequencies?
  6 comentarios
Walter Roberson
Walter Roberson el 10 de Ag. de 2021
In order to solve that, you need some hardware to do analog to digital conversion between your 3V source and MATLAB.
3V is too large for audio work, so you are not going to be able to use microphone inputs to do this. You are going to need hardware such as a National Instruments ADC or at least an arduino (you might need to put in a resistor to lower the voltage range.)
The software programming needed on the MATLAB end depends a lot on which analog to digital convertor you use.
The appropriate analog to digital convertor to use is going to depend in part on what sampling frequency you need to use; you did not define that, so we cannot make any hardware recommendations yet.
Gokul Krishna N
Gokul Krishna N el 13 de Oct. de 2021
Just been reading the comments in this question. Hats off to you, sir @Walter Roberson

Iniciar sesión para comentar.

Respuesta aceptada

Rick Rosson
Rick Rosson el 24 de Abr. de 2012
Please try:
%%Time specifications:
Fs = 8000; % samples per second
dt = 1/Fs; % seconds per sample
StopTime = 0.25; % seconds
t = (0:dt:StopTime-dt)'; % seconds
%%Sine wave:
Fc = 60; % hertz
x = cos(2*pi*Fc*t);
% Plot the signal versus time:
figure;
plot(t,x);
xlabel('time (in seconds)');
title('Signal versus Time');
zoom xon;
HTH.
Rick
  2 comentarios
Rajasekaran
Rajasekaran el 14 de Mzo. de 2013
Thanks for your reply & detailed answer.
Nauman Hafeez
Nauman Hafeez el 28 de Dic. de 2018
How to calculate Fs for a particular frequency signal?
I am generating a stimulating signal using matlab for my impedance meter and it gives me different results on different Fs.

Iniciar sesión para comentar.

Más respuestas (7)

Mike Mki
Mike Mki el 29 de Nov. de 2016
Dear Mr. Rick, Is it possible to create knit structure in Matlab as follows:

Junyoung Ahn
Junyoung Ahn el 16 de Jun. de 2020
clear;
clc;
close;
f=60; %frequency [Hz]
t=(0:1/(f*100):1);
a=1; %amplitude [V]
phi=0; %phase
y=a*sin(2*pi*f*t+phi);
plot(t,y)
xlabel('time(s)')
ylabel('amplitude(V)')
  2 comentarios
DARSHAN
DARSHAN el 8 de En. de 2023
why should we multiply f with 100?
Walter Roberson
Walter Roberson el 8 de En. de 2023
I think the intent was to give 100 samples per cycle.

Iniciar sesión para comentar.


Robert
Robert el 28 de Nov. de 2017
aaa,
What goes wrong: by multiplying time vector t by 2*pi*60 your discrete step size becomes 0.1*2*pi*60=37.6991. But you need at least two samples per cycle (2*pi) to depict your sine wave. Otherwise you'll get an alias frequency, and in you special case the alias frequency is infinity as you produce a whole multiple of 2*pi as step size, thus your plot never gets its arse off (roundabout) zero.
Using Rick's code you'll be granted enough samples per period.
Best regs
Robert

shampa das
shampa das el 26 de Dic. de 2020
Editada: Walter Roberson el 31 de En. de 2021
clc; t=0:0.01:1; f=1; x=sin(2*pi*f*t); figure(1); plot(t,x);
fs1=2*f; n=-1:0.1:1; y1=sin(2*pi*n*f/fs1); figure(2); stem(n,y1);
fs2=1.2*f; n=-1:0.1:1; y2=sin(2*pi*n*f/fs2); figure(3); stem(n,y2);
fs3=3*f; n=-1:0.1:1; y3=sin(2*pi*n*f/fs3); figure(4); stem(n,y3); figure (5);
subplot(2,2,1); plot(t,x); subplot(2,2,2); plot(n,y1); subplot(2,2,3); plot(n,y2); subplot(2,2,4); plot(n,y3);

soumyendu banerjee
soumyendu banerjee el 1 de Nov. de 2019
%% if Fs= the frequency u want,
x = -pi:0.01:pi;
y=sin(Fs.*x);
plot(y)
  1 comentario
Walter Roberson
Walter Roberson el 20 de Sept. de 2024
This should have
plot(x, y)

Iniciar sesión para comentar.


sevde busra bayrak
sevde busra bayrak el 24 de Ag. de 2020
sampling_rate = 250;
time = 0:1/sampling_rate:2;
freq = 2;
%general formula : Amplitude*sin(2*pi*freq*time)
figure(1),clf
signal = sin(2*pi*time*freq);
plot(time,signal)
xlabel('time')
title('Sine Wave')

Ranjita
Ranjita el 30 de Sept. de 2024
clc
clear all
fs = 10000;
T=1/fs
T = 1.0000e-04
f1 = 100;
f2= 50;
L= 10000;
t = (0:L-1)*T;
x1 =sin(2*pi*f1*t)+4*cos(2*pi*f2*t)
x1 = 1×10000
4.0000 4.0608 4.1174 4.1696 4.2171 4.2598 4.2973 4.3294 4.3561 4.3770 4.3920 4.4009 4.4037 4.4000 4.3898 4.3730 4.3496 4.3193 4.2821 4.2381 4.1871 4.1292 4.0643 3.9926 3.9139 3.8284 3.7362 3.6374 3.5320 3.4202
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
figure
subplot(2,2,1)
plot(t,x1)
axis([0 0.1 -1 6]);
title('SS Function');
xlabel('time');
ylabel('magnitude');
%frequency domain conversion and plotting
Y_x1=fftshift(fft(x1));
subplot(2,1,2)
plot (-(fs/2-fs/L)-1:(fs/L):(fs/2-fs/L),abs(Y_x1))
axis([-700 700 0 max(abs(Y_x1))+10000]);
title('Magnitude spectrum of S1 Function');
xlabel('Frequency(Hz)');
ylabel('magnitude');
sgtitle('Frequency Domain Representation of S1 Function');

Categorías

Más información sobre 2-D and 3-D Plots en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by