Error using plot Vectors must be the same length.
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Klaudia Piwko
le 16 Mar 2024
Commenté : Klaudia Piwko
le 17 Mar 2024
Hi, I just started using MatLab. How can I get the plot like it is in the picture? I wrote this code, but I get the Error using plot Vectors must be the same length.
fs=500;
t=(0:(6*fs-1))/fs;
sygnal2a=sin(t(1:500)*1*2*pi);
sygnal2b=sin(t(1:500)*1*2*pi+2*pi);
sygnal2c=sawtooth(t(2:500)*3*2*pi+4*pi,0.5);
sygnal2d=square(t(2:500)*1*2*pi+6*pi,25);
sygnal2=[sygnal2a sygnal2b sygnal2c sygnal2d];
figure;
plot(t', sygnal2');
grid on;
tp = 1.8;
ip = floor(tp*fs)+1;
tk = 3.3;
ik = floor(tk*fs)+1;
hold on;
plot(t(ip:ik)', [sygnal2(ip:ik)']);
Here is the content of the task:
Generate a signal called signal2, which will last 6 s and will consist of the following fragments:
• for t=<0;2) s will be the sum of sinusoidal signals with amplitudes 1 and frequencies 1 and 4 Hz,
• for t=<2;4) s will be a triangle signal with a frequency of 3 Hz,
• for t=<4;6) s will be a square wave signal with a frequency of 1 Hz, 25% duty cycle and variable values between 0 and 1.
Sampling frequency fs = 500 Hz. Make a graph of the signal.
0 commentaires
Réponse acceptée
Walter Roberson
le 16 Mar 2024
fs=500;
t=(0:(6*fs-1))/fs;
sygnal2a=sin(t(1:500)*1*2*pi);
sygnal2b=sin(t(1:500)*1*2*pi+2*pi);
sygnal2b is the same as sygnal2a except for a phase shift of 2*pi . But since the operation is sin(), a phase shift of 2*pi is the same as a phase shift of 0 (to within round-off error). So your sygnal2a and sygnal2b are the same (to within round-off error)
Through coincidence between fs and 1:500, each of them covers 1 second worth of signal.
sygnal2c=sawtooth(t(2:500)*3*2*pi+4*pi,0.5);
sygnal2d=square(t(2:500)*1*2*pi+6*pi,25);
Those are each one sample short of 1 second worth of signal. The reason for being one sample short is not obvious.
sygnal2=[sygnal2a sygnal2b sygnal2c sygnal2d];
The signals are concatenated together, giving a total of 2 samples less than 4 seconds.
It is likely that sygnal2b and sygnal2c and sygnal2d should be using t() some other offset -- (501:1000), (1000:1498), (1499:1998)
whos t sygnal2
figure;
plot(t', sygnal2');
You try to use the full t (length 3000) even though your composite signal is decidedly shorter. You should be using t(1:length(sygnal2))
3 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Spectral Measurements dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!