I have to create a square wave of amplitude 0.19 and period 495 samples and I don't know how to do. I just have understood that in Matlab there is the command x=square(t) but I really don't know how to represent my period and my amplitude. Could someone help me please?

댓글 수: 5

Jonas
Jonas 2021년 5월 10일
per period you want 495 samples and which frequency do you want?
Benedetta Bonini
Benedetta Bonini 2021년 5월 10일
I don't know the frequency, I just have amplitude and period... but isn't frequency=1/period?
Jonas
Jonas 2021년 5월 10일
yes and no. samples per period refers to sampling frequency. normally you want a frequency e.g. of 2 Hz, which means 2 per second. during that second the signal is sampled several times which refers to the sampling frequency
Adam Danz
Adam Danz 2021년 5월 10일
This answer demonstrates a parameterized step function but you need to know the period and what you're describing is the number of samples within a period.

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

 채택된 답변

Scott MacKenzie
Scott MacKenzie 2021년 5월 10일
편집: Scott MacKenzie 2021년 5월 11일

2 개 추천

Here's a brute-force solution. It's a bit odd, but it does create a square wave according to your specs (with one extra sample to round out the math):
amplitude = 0.19;
samples = 496;
y = [ones(1,samples/2)*amplitude/2, ones(1,samples/2)*amplitude/2*-1];
plot(y);
Just having a bit of fun with this. The code below adds a variable cycles to output >1 cycle, if desired.
amplitude = 0.19;
samples = 496; % per cycle
cycles = 5;
y = [ones(1,samples/2)*amplitude/2, ones(1,samples/2)*amplitude/2*-1];
y = repmat(y, 1, cycles);
plot(y);
Here's a more compact and concise approach... (same output as above)
amplitude = 0.19;
samples = 496;
cycles = 5;
y = repmat([amplitude/2 -amplitude/2], samples/2, cycles);
y = y(:);
plot(y);

추가 답변 (0개)

Community Treasure Hunt

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

Start Hunting!

Translated by