[英]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
向量可以單獨放置。 您的代碼無法正常工作的原因是因為您放置了s0
和s1
並將它們串聯為一個一維數組。 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! :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.