above code works but i cant understand how it does. That's the part I need help with
Generating a pulse signal
조회 수: 92 (최근 30일)
이전 댓글 표시
Hİ guys, I basically have this code and want to generate below figure. But I can't understand how it works. I tried the help function for the impulse but still couldn't understand it.
I only have hard time generating the pulse signal.
f=3; %frequency [Hz]
t0=(0:0.0009:1);
a=1; %amplitude [V]
phi=0; %phase
y=a*sin(2*pi*f*t0+phi)-2;
f=5; %frequency [Hz]
t1=(2:0.0009:3);
a=1; %amplitude [V]
phi=0; %phase
z=a*cos(2*pi*f*t1+phi)+2;
t = (1:0.01:2);
impulse = t==1;
impulse1 = t==1.1;
impulse2 = t==1.2;
impulse3 = t==1.3;
impulse4 = t==1.4;
impulse5 = t==1.5;
impulse6 = t==1.6;
impulse7 = t==1.7;
impulse8 = t==1.8;
impulse9 = t==1.9;
impulse10 = t==2;
x=double(impulse).*1;
x1=double(impulse1).*1;
x2=double(impulse2).*1;
x3=double(impulse3).*1;
x4=double(impulse4).*1;
x5=double(impulse5).*1;
x6=double(impulse6).*1;
x7=double(impulse7).*1;
x8=double(impulse8).*1;
x9=double(impulse9).*1;
x10=double(impulse10).*1;
d=linspace(0,3,3335);
c=[y x x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 z];
subplot(4,1,1)
plot(d,c,'black','LineWidth',1.5)
답변 (2개)
Star Strider
2021년 11월 2일
The posted code is an extremely cumbersome way of coding an extremely straightforward problem.
The ‘fcn’ function here should make it more understandable —
t = linspace(0, 3, 1800);
f=3; %frequency [Hz]
a=1; %amplitude [V]
phi=0; %phase
% y=a*sin(2*pi*f*t0+phi)-2
fcn = @(t,f,a,phi) (a*sin(2*pi*f*t+phi)-2) .* ((t>=0) & (t<1)) + (rem(t,0.1)<=1E-2) .* ((t>=1) & (t<2)) + (a*sin(2*pi*f*t+phi)+2) .* ((t>=2) & (t<=3));
% ↑ ← FIRST 'sin' CALL ↑ ← PULSE TRAIN ↑ ← SECOND 'sin' CALL
figure
plot(t, fcn(t,f,a,phi))
grid
.
댓글 수: 5
Star Strider
2021년 11월 2일
Corrected ‘fcn’ and plot —
t = linspace(0, 3, 3335);
f=[3 5]; %frequency [Hz]
a=1; %amplitude [V]
phi=0; %phase
fcn = @(t,f,a,phi) (a*sin(2*pi*f(1)*t+phi)-2) .* ((t>=0) & (t<1)) + (rem(t,0.1)<=1E-2) .* ((t>=1) & (t<2)) + (a*cos(2*pi*f(2)*t+phi)+2) .* ((t>=2) & (t<=3));
% ↑ ← 'sin' CALL ↑ ← PULSE TRAIN ↑ ← 'cos' CALL
figure
plot(t, fcn(t,f,a,phi))
grid
NOTE — The original ‘z’ is coded as cos, however plotted as sin. This cannot be accounted for by ‘phi’ that is 0 in both function calls. The first value of ‘z’ in the original code is 3 and not 2 as plotted.
.
Jon
2021년 11월 2일
편집: Jon
2021년 11월 2일
I like @Star Strider's approach, but as I had already coded up the approach below before I saw that, I thought I would provide this just to show an alternative approach.
% define first sinusoidal segment
tStart = 0;
tEnd = 1;
f=3; %frequency [Hz]
a=1; %amplitude [V]
phi=0; %phase
t1 = tStart:0.0009:tEnd;
x1=a*sin(2*pi*f*t1+phi)-2;
% define impulses
tStart = 1;
tEnd = 2;
t2 = tStart:0.001:tEnd;
idx = 1:100:1000; % indices in t2 where impulses occur
impulseMag = 1; % magnitude of impulses
% assign impulses at corresponding times where they occur
x2 = zeros(size(t2)); % initialize with no impulses
x2(idx) = impulseMag; % assign impulses
% define second sinusoidal segment
tStart = 2;
tEnd = 3;
f=5; %frequency [Hz]
a=1; %amplitude [V]
phi=0; %phase
t3 = tStart:0.0009:tEnd
x3=a*cos(2*pi*f*t3+phi)+2;
% make overall signal
t = [t1 t2 t3];
x = [x1 x2 x3];
% plot results
figure
subplot(4,1,1)
plot(t,x,'black','LineWidth',1.5)
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Pulsed Waveforms에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!