用MATLAB实现BPSK
我正试图编写一些用于绘制BPSK的简单的MATLAB代码,但代码不起作用。代码如下:用MATLAB实现BPSK,matlab,Matlab,我正试图编写一些用于绘制BPSK的简单的MATLAB代码,但代码不起作用。代码如下: t=0:(1/1000):3; figure(1); s0=sin( (2*pi)*t ); s1=sin( (2*pi)*t+(pi) ); sout=[s0 s1]; plot(t,sout); grid on; 如果要一次绘制一个符号,应在同一个绘图上绘制两个信号,如下所示 t = 0 : (1/1000) : 3; s0 = sin((2*pi)*t); s1=sin((2*pi)*t+pi);
t=0:(1/1000):3;
figure(1);
s0=sin( (2*pi)*t );
s1=sin( (2*pi)*t+(pi) );
sout=[s0 s1];
plot(t,sout);
grid on;
如果要一次绘制一个符号,应在同一个绘图上绘制两个信号,如下所示
t = 0 : (1/1000) : 3;
s0 = sin((2*pi)*t);
s1=sin((2*pi)*t+pi);
plot(t, s0);
hold on
plot(t, s1, 'r');
grid
您无需按照Nemanllah的建议使用
按住
,即可将此代码矢量化。只需将每个数据跟踪放在一个单独的列中即可。t
向量可以单独使用。代码不起作用的原因是您放置了s0
和s1
并将它们连接为单个1D数组t
有3001个元素,而sout
将有3001*2=6002个元素。尺寸不兼容,这就是为什么会出现错误
您可以使用plot
打印多个信号,而无需使用hold on
。只需确保每个跟踪位于单独的列中。在代码设置中,您只需将s0
和s1
转置即可。因此:
t=0:(1/1000):3;
figure(1);
s0=sin( (2*pi)*t );
s1=sin( (2*pi)*t+(pi) );
sout=[s0.' s1.']; %// Change - transpose s0 and s1
plot(t,sout);
grid on;
这就是我得到的:
请注意,MATLAB自动为您对跟踪进行颜色编码,查看每个数据跟踪如何位于单独的列中
编辑
现在您需要将这两个信号连接在一起(实际上BPSK就是这样做的)。我们可以很容易地做到这一点,通过扩展你拥有的时间向量,然后在第二个信号上加上,当你像在你原来的帖子中那样做的时候。您可以通过以下方式轻松完成此操作:
t=0:(1/1000):3;
figure(1);
s0=sin( (2*pi)*t );
s1=sin( (2*pi)*t+(pi) );
sout = [s0 s1]; %// Note we are concatenating now
tvec = [t t(end) + t]; %// NEW
plot(tvec, sout); %// Plot 2 signals together as 1
看看这句话:
tvec = [t t(end) + t];
我创建了一个新的向量,它的原始时间向量介于[0,3]
之间。然后我扩展这个向量,以便我们从[0,3]
中获取时间向量,并用原始信号的最后一个时间值(即3)对其进行偏移。因此,我们将在末尾添加一个向量[3,6]
,因为我们将有两个信号,每个信号为3秒,因此为6秒。这就是我得到的:
在我看来像BPSK!:) 是否可能在s0完成后准确绘制s1@是的。我会写一个答案soon@eyadkht-完成。祝你好运