How to generate a square periodic wave?

조회 수: 12 (최근 30일)
Joe Koning
Joe Koning 2013년 4월 25일
댓글: winkmal 2018년 3월 26일
I need to create a continuous wave, however, the following method will not work for what i intend to do. ie
fs = 10000;
t = 0:1/fs:1.5;
x2 = square(2*pi*50*t);
This is because, as the wave is being called inside of a function, which generates derivitves for the solutions to a ODE, the equation needs to call on specific times of t at that point in the function, rather than just from a t-array as shown above. Is there any other way i could create this square wave, using the same frequency?

답변 (1개)

Wayne King
Wayne King 2013년 4월 25일
편집: Wayne King 2013년 4월 25일
Perhaps I don't understand your post, but if you create the square wave as shown above, then why can't you obtain the value of the resulting vector (function) at specific times?
fs = 10000;
t = 0:1/fs:1.5;
x2 = square(2*pi*50*t);
Now you know the interval between every value in the waveform. If I want the value of the waveform at 0.02 seconds, you know that corresponds to
x(201)
and so on.
  댓글 수: 2
Joe Koning
Joe Koning 2013년 4월 25일
hmmm well im using ode15s to solve a differential equation which is affected by this square wave, so as far as im aware, the intervals in the equations shown above wouldnt match up to the time vector that is output by ode15s which corresponds to the solution array?
winkmal
winkmal 2018년 3월 26일
A bit late, but how about an anonymous function?
x2 = @(t) square(2*pi*50*t);
If you use this in your RHS function, Matlab should be able to evaluate it at any value of t.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Programming에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by