How to create a square wave signal

18 visualizzazioni (ultimi 30 giorni)
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 Commenti
Jonas
Jonas il 10 Mag 2021
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 il 10 Mag 2021
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.

Accedi per commentare.

Risposta accettata

Scott MacKenzie
Scott MacKenzie il 10 Mag 2021
Modificato: Scott MacKenzie il 11 Mag 2021
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);

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by