我正在尝试编写一些简单 MATLAB代码来绘制BPSK,但代码无效。这是代码:
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;
答案 0 :(得分:0)
如果你想绘制一个符号时间,你应该在同一个图上绘制这两个信号。
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
答案 1 :(得分:0)
您可以将此代码绘制为矢量化,而无需像Nematollah所建议的那样使用hold on
。只需将每个数据跟踪放在单独的列中。 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给我! :)