我在octave / matlab中创建了一个信号,它是一个半波,(变量sin_half
)和半个方波,(变量square_half
)我希望相移组合信号,(变量comb_sig
),因为它是一个连接的信号。我怎样才能做到这一点?
我的目标是在加入一个信号的前半部分和另一个信号的后半部分并将它们连接在一起时产生周期性信号。然后我想将组合信号相移,好像它是一个信号。
从(图1)中的动画可以看出,我现在所拥有的是sinwave信号的一半只是从"中心"并且方波半部仅相移到"中心"而不是将整个信号相移到一起,就像 中的例子(图2)。如何将变量comb_sig
全部移位到一起作为一个组合信号,如(图2)?
下面是0度和180度相移应该是什么样子的静态图像。在figure 1
上的动画中,当相位时,方波从未到达另一侧移位是180度我该如何解决这个问题?
见下面的代码:
Vth = 0; % Threshold
amp = 1; % Amplitude of input/output
freq = 1; % frequency
for n=1:2:360 %phase shift
ysin = amp*sin(freq*t+(n*pi/180)); % Entire sine wave creation
ysquare = amp*sign(ysin - Vth); % Entire square wave creation
sin_half=ysin(1,1:length(ysin)/2); % 1st half of wave choosen (sine wave)
square_half=ysquare(end-length(ysquare)/2+1:end); % 2nd half of wave choosen a (square wave)
comb_sig=[sin_half,square_half]; % 1st half and 2nd half of waves combined together
plot(t,comb_sig)
axis([-.1 2.2*pi -1.5 1.5])
pause(.01)
end
有没有人知道是否有一个公式/等式/所需的步骤可以让我这样做。我当时认为变量comb_sig
需要乘以某种东西,但我不确定是什么。
PS:我使用octave 4.0,类似于matlab
答案 0 :(得分:0)
这是更新的matlab代码。
amp = 1; % Amplitude of input/output
freq = 1; % frequency
time = 1/freq; %time
t=0:0.001:(time-0.001);
tHalf=t(1:size(t,2)/2);
ysinHalf = amp*sin(2*pi*freq*(tHalf)); % First half sine wave creation
ysquareHalf = -amp*ones(1,size(ysinHalf,2)); % Last half square wave creation
ywave=[ysinHalf ysquareHalf];
for n=0:2:360
phaseShifted=circshift(ywave,[0 -round(n*size(ywave,2)/360)]);
plot(t,phaseShifted);
axis([0 time -(amp+0.5) (amp+0.5)]);
pause(.01)
end