声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2824|回复: 7

[编程技巧] 求助用matlab画QPSK波形

[复制链接]
发表于 2007-6-23 19:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
设载波频率为20Hz,信息速率为2Baud,用MatLab画出QPSK信号波形。
回复
分享到:

使用道具 举报

发表于 2007-6-23 20:33 | 显示全部楼层
不知道原理啊
发表于 2007-6-23 20:34 | 显示全部楼层
  1. %file name: qpsk.m
  2. %Written by Dr. James S. Kang, Cal Poly Pomona.
  3. %Plot of QPSK waveform and spectrum.
  4. %d = input data such as [1 1 0 0 1 0 0 1 1 1].
  5. %fb = data rate in bps.
  6. %fc = carrier frequency.
  7. %Ac = Amplitude of the carrier.
  8. %fstart = start frequency for spectrum plot.
  9. %fend = end frequency for spectrum plot.
  10. %To run the program, try
  11. % >>qpsk([1 1 0 0 1 0 1 0 1 1],500,1000,1,0,4000)  <Enter>
  12. function[s] = qpsk(d,fb,fc,Ac,fstart,fend)
  13. N=size(d,2);        %N = number of data bits.
  14. if rem(N,2) == 1
  15.         N=N+1
  16.         d(N)=0
  17. end
  18. N2=N/2;
  19. M=32;        %M = number of samples per bit duration.
  20. tb=1/fb;tc=1/fc;
  21. Nc=floor(M*tc/tb); %Nc = number of samples per period of carrier.
  22. step=tb/M;        %step = sampling interval.
  23. for j = 1:N
  24.         if d(j) == 1
  25.            for i = 1:M
  26.                 m((j-1)*M+i)=1;
  27.            end
  28.         else
  29.            for i = 1:M
  30.                 m((j-1)*M+i)=-1;
  31.            end
  32.         end
  33. end
  34. for j = 1:N2
  35.         if d(j*2-1) == 1
  36.            for i = 1:2*M
  37.                 mi((j-1)*2*M+i)=1;
  38.                 si((j-1)*2*M+i)=Ac*cos(2*pi*(i-1)/Nc);
  39.            end
  40.         else
  41.            for i = 1:2*M
  42.                 mi((j-1)*2*M+i)=-1;
  43.                 si((j-1)*2*M+i)=Ac*cos(2*pi*(i-1)/Nc+pi);

  44.            end
  45.         end
  46.         if d(j*2) == 1
  47.            for i = 1:2*M
  48.                 mq((j-1)*2*M+i)=1;
  49.                 sq((j-1)*2*M+i)=Ac*sin(2*pi*(i-1)/Nc);
  50.            end
  51.         else
  52.            for i = 1:2*M
  53.                 mq((j-1)*2*M+i)=-1;
  54.                 sq((j-1)*2*M+i)=Ac*sin(2*pi*(i-1)/Nc+pi);

  55.            end
  56.         end
  57. end
  58. for k=1:M*N
  59.         t(k)=(k-1)*step;
  60.         s(k)=si(k)+sq(k);
  61. end
  62. figure
  63. subplot(3,1,1)
  64. plot(t,m)
  65. grid
  66. %xlabel('Time')
  67. ylabel('Amplitude')
  68. title('Input Waveform')
  69. subplot(3,1,2)
  70. plot(t,mi)
  71. grid
  72. %xlabel('Time')
  73. ylabel('Amplitude')
  74. title('I Channel Waveform')
  75. subplot(3,1,3)
  76. plot(t,mq)
  77. grid
  78. xlabel('Time')
  79. ylabel('Amplitude')
  80. title('Q Channel Waveform')
  81. figure
  82. subplot(3,1,1)
  83. plot(t,si)
  84. grid
  85. %xlabel('Time')
  86. ylabel('Amplitude')
  87. title('I Channel Modulated Waveform')
  88. subplot(3,1,2)
  89. plot(t,sq)
  90. grid
  91. %xlabel('Time')
  92. ylabel('Amplitude')
  93. title('Q Channel Modulated Waveform')
  94. subplot(3,1,3)
  95. plot(t,s)
  96. grid
  97. xlabel('Time')
  98. ylabel('Amplitude')
  99. title('QPSK Waveform')
  100. %
  101. %Spectrum of QPSK
  102. %
  103. M1=64;        %M1 = number of points per lobe.
  104. fstep=fb/M1; %fstep = freq. step.  
  105. Nf=floor((fend-fstart)/fstep); %Nf = total number of freq. points computed.
  106. for i = 1:Nf
  107. f(i)=(i-1)*fstep+fstart;
  108.         if f(i) == fc S(i)=Ac^2*tb;
  109.         else
  110.          S(i)=(Ac^2*tb)*(sin(pi*(f(i)-fc)*2*tb)/(pi*(f(i)-fc)*2*tb))^2;
  111.         end
  112. end
  113. for i = 1:Nf
  114. dBS(i) = 10*log(S(i));
  115. if dBS(i) < -200 dBS(i)=-200; end
  116. end
  117. figure
  118. subplot(2,1,1)
  119. plot(f,S)
  120. grid
  121. %xlabel('Frequency')
  122. ylabel('Magnitude')
  123. title('QPSK Spectrum (Linear)')
  124. subplot(2,1,2)
  125. plot(f,dBS)
  126. grid
  127. xlabel('Frequency')
  128. ylabel('Magnitude')
  129. title('QPSK Spectrum (dB)')
  130. end
复制代码

评分

1

查看全部评分

 楼主| 发表于 2007-6-23 20:39 | 显示全部楼层
不能运行啊!!!
发表于 2007-6-23 20:41 | 显示全部楼层
 楼主| 发表于 2007-6-23 21:06 | 显示全部楼层
我有看啊,可是写得太专业点了吧,很多都看不懂。我以前只是学过一些简单的程序!
发表于 2007-6-23 21:10 | 显示全部楼层
如果连调用函数还不会,建议还是先不要做什么东西了
找本matlab基础看看怎么回事吧
 楼主| 发表于 2007-6-23 21:19 | 显示全部楼层
我也不想做啊,可是老师布置的作业。不能不去完成啊!!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-10-3 02:25 , Processed in 0.058089 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表