# Error using plot Vectors must be the same length.

조회 수: 1 (최근 30일)
Klaudia Piwko 2024년 3월 16일
댓글: Klaudia Piwko 2024년 3월 17일
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');
Error using plot
Vectors must be the same length.
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.

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

### 채택된 답변

Walter Roberson 2024년 3월 16일
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
Name Size Bytes Class Attributes sygnal2 1x1998 15984 double t 1x3000 24000 double
figure;
plot(t', sygnal2');
Error using plot
Vectors must be the same length.
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이전 댓글 1개 표시이전 댓글 1개 숨기기
Walter Roberson 2024년 3월 17일
t=(0:2999);
That needs to be
t=(0:2999)/fs;
Klaudia Piwko 2024년 3월 17일
Oh thank you so much. :)

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

### 카테고리

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

R2021a

### Community Treasure Hunt

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

Start Hunting!

Translated by