Matlab 如何计算/创建通过连接阵列创建的信号的相移

Matlab 如何计算/创建通过连接阵列创建的信号的相移,matlab,octave,Matlab,Octave,我已经在倍频程/matlab中创建了一个信号,它是半个正弦波,(variablesin\u-half)和半个方波,(variablesquare\u-half),我想对组合信号进行相移,(variablecomb\u-sig),因为它是一个连接的信号。我该怎么做 我的目标是通过将一个信号的前半部分和另一个信号的后半部分连接起来,并将它们附加在一起,从而生成一个周期性信号。然后我想对组合信号进行相移,就像它是一个信号一样。 从(图1)中的动画中可以看出,我现在看到的是信号的半个正弦波只是从“中心”

我已经在倍频程/matlab中创建了一个信号,它是半个正弦波,(variable
sin\u-half
)和半个方波,(variable
square\u-half
),我想对组合信号进行相移,(variable
comb\u-sig
),因为它是一个连接的信号。我该怎么做

我的目标是通过将一个信号的前半部分和另一个信号的后半部分连接起来,并将它们附加在一起,从而生成一个周期性信号。然后我想对组合信号进行相移,就像它是一个信号一样。

从(图1)中的动画中可以看出,我现在看到的是信号的半个正弦波只是从“中心”移相,半个方波只是从“中心”移相,而不是将整个信号一起移相,,如中的示例(图2)。如何将变量
comb_sig
作为一个组合信号进行相移,如图2所示

这是0度和180度相移应该是什么样子的静态图像。
图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

这里是更新的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

下面是更新后的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

在您的示例(2)中,似乎两个信号都绘制在整个x范围内。方波的峰值似乎固定在~x=0、~x=pi和~x=2*pi处,在整个过程中,只有正弦波似乎向左移动process@BillBokeey你说的对,我很难做到这一点,我要拍一些静止的照片,然后把它们贴到问题上哦,实际上,我认为这是XZ平面图中三维波的切割平面图,其中,正弦波在ZY平面上是均匀的,并向XZ平面的左侧移动,“方”波在沿Y方向移动的平面上是方形凸起,加上不连续点处的高度间隙始终为1,总最大值为3,这意味着方形凸起的振幅为1,正弦波的振幅为12@BillBokeey我添加了一个静态图像,以防动画让人困惑。。请注意,
图1
上的方波在
180度
时从未到达另一侧,就像它在
静态图像中所显示的那样。在您的示例(2)中,两个信号似乎都绘制在整个x范围内。方波的峰值似乎固定在~x=0、~x=pi和~x=2*pi处,在整个过程中,只有正弦波似乎向左移动process@BillBokeey你说的对,我很难做到这一点,我要拍一些静止的照片,然后把它们贴到问题上哦,实际上,我认为这是XZ平面图中三维波的切割平面图,其中,正弦波在ZY平面上是均匀的,并向XZ平面的左侧移动,“方”波在沿Y方向移动的平面上是方形凸起,加上不连续点处的高度间隙始终为1,总最大值为3,这意味着方形凸起的振幅为1,正弦波的振幅为12@BillBokeey我添加了一个静态图像,以防动画让人困惑。。请注意
图1上的方波在
180度
时从未到达另一侧,就像
静态图像中显示的那样。