簡體   English   中英

使用MATLAB實現BPSK

[英]Implementing BPSK using 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);
plot(t, s0);
hold on
plot(t, s1, 'r');
grid

您可以將矢量化的代碼繪制成圖形,而無需像Nematollah所建議的那樣hold on使用。 只需將每個數據跟蹤放在單獨的列中。 t向量可以單獨放置。 您的代碼無法正常工作的原因是因為您放置了s0s1並將它們串聯為一個一維數組。 t具有3001個元素,而sout具有3001 * 2 = 6002元素。 尺寸不兼容,這就是為什么會出現錯誤。

您可以使用plot繪制多個信號,而無需使用hold on 只需確保每個跟蹤都在單獨的列中即可。 通過設置代碼,您只需要轉置s0s1 因此:

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! :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM