声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1538|回复: 9

[编程技巧] 求救,该了很久改不出来呀!拜托了!

[复制链接]
发表于 2006-4-14 12:09 | 显示全部楼层 |阅读模式

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

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

x
谢谢各位了,请帮忙哈!急需,但是改了很久改不出来,在调制那里有错,而且高斯噪声加不上呀!拜托了!

  1. f_data=1;
  2. f_chip=11;
  3. fc=220;
  4. fs=3*fc;
  5. N=fs/f_chip;
  6. data_length=5000;
  7. M=2;
  8. num_of_user=4;
  9. matches=0;
  10. errors=0;
  11. count=1;
  12. SNRpbit=0;
  13. SNR=SNRpbit;

  14. rand('state',sum(100*colock));
  15. randn('state',sum(100*colock));
  16. numplot=100;
  17. msg_unsprd=randsrc(data_length,num_of_user,[0:M-1]);
  18. PN_seq=(11,num_of_user,[0:1]);

  19. for s=1:num_of_user
  20.     j=1;
  21.     for i=1:data_length
  22.        for k=j:j+f_chip-1
  23.        mdg_coded(s,k)=msg_unsprd(i,s);
  24.        end;
  25.     msg_spread(s,[j:(j+f_chip-1)])=xor(msg_coded(s,[j:(j+f_chip-1)])',PN_seq([1:f_chip],s));
  26.     j=f_chip*i+1;
  27.     end;
  28. end;
  29. len_of_spread=length(msg_spread);

  30. msg_tr=zeros(num_of_user,data_length*f_chip*N);
  31. for s=1:num_of_user
  32.     msg_tr(s,:)=dmod(msg_spread(s,:),fc,f_chip,fs,'psk','M');
  33. end;
  34. len_of_tr=length(msg_tr);

  35. for SNRpbit=0:1:7
  36.     SNR=SNRpbit;
  37.     rand('state',sum(100*colock));
  38.     randn('state',sum(100*colock));
  39.    
  40. msg_rec_data=zeros(num_of_user,len_of_tr);
  41. sum_1=zeros(1,len_of_tr);
  42. msg_received=zeros(1,len_of_tr);

  43. for s=1:num_of_user
  44.     msg_rec_data(s,:)=awgn(msg_tr(s,:),SNR-10*log10(N),'measured','dB');
  45.      for i=1:data_length
  46.      sum_1=sum_1+msg_rec_data(s,i);
  47.      msg_received=sum_1;
  48.      end;
  49. end;

  50. msg_demoded=ddemod(msg_received,fc,f_chip,fs,'measured','dB');

  51.   j=1;
  52.   for i=1:data_length
  53.      msg_de_spread(j:(j+f_chip-1))=xor(msg_received(j:(j+f_chip-1))',PN_seq(1:f_chip,1));
  54.      j=f_chip*i+1;
  55.   end;

  56.   j=1;
  57.   for i=1:data_length
  58.     sum_2=0;
  59.     for k=j:j+f_chip-1
  60.        sum_2=sum_2+msg_de_spread(k);
  61.     end;
  62.   if(sum_2>=7)
  63.     msg_de_spread(i)=1;
  64.   else
  65.     msg_de_spread(i)=0;
  66.   end;
  67.   j=f_chip*i+1;
  68.   end;

  69.   for i=1:data_length
  70.      if(msg_de_spread(i)==msg_unsprd(i,1))
  71.      matches=matches+1;
  72.      else
  73.      errors=errors+1;
  74.      end;
  75.   end;
  76.   BER_awgn(count)=errors/data_length;
  77.     count=count+1;
  78.     errors=0;
  79.   end;
  80. end;
  81.    X=[1:8];
  82.    semilogy(X,BER_awgn(count),'-.b*');
  83.    hold on;
  84.    grid on;
  85. 
复制代码
回复
分享到:

使用道具 举报

发表于 2006-4-14 15:48 | 显示全部楼层

回复:(xianjuan)求救,该了很久改不出来呀!拜托了...

简单看了一下错误,很明显就是不仔细,比如
rand('state',sum(100*colock));
randn('state',sum(100*colock));
colock写错了,是clock

PN_seq=(11,num_of_user,[0:1]);
这是什么东西?有这样的表示方法吗?

msg_coded根本就没定义,是什么东西?

其他的没仔细看,自己再好好检查吧
 楼主| 发表于 2006-4-16 10:02 | 显示全部楼层
是产生一个PN序列的做法,我打错了,但是我的源程序是对的,还有就是那个msg_coded虽然没有预定义,但是后面我对他进行负值了,我的程序主要是错在
msg_tr=zeros(num_of_user,data_length*f_chip*N);
for s=1:num_of_user
msg_tr(s,:)=dmod(msg_spread(s,:),fc,f_chip,fs,'psk','M');
end;
len_of_tr=length(msg_tr);
主要是调制那句话有问题,无法进行,前面都是对的,是我输入时马虎产生的错误,
还有就是在假如高撕噪声时出错
也就是这句化
msg_rec_data=zeros(num_of_user,len_of_tr);
sum_1=zeros(1,len_of_tr);
msg_received=zeros(1,len_of_tr);

for s=1:num_of_user
msg_rec_data(s,:)=awgn(msg_tr(s,:),SNR-10*log10(N),'measured','dB');
for i=1:data_length
sum_1=sum_1+msg_rec_data(s,i);
msg_received=sum_1;
end;
end;
拜托了,谢谢您!
 楼主| 发表于 2006-4-16 10:11 | 显示全部楼层
happy 救命呀!
 楼主| 发表于 2006-4-16 10:17 | 显示全部楼层
将程序更正哈!说明一下,我做的多用户干扰抑制,本程序是对多用户通信的仿真,是四个用户同时通信,先对信息进行编码,然后扩频,然后进行PSK调制,然后加入高斯噪声,然后将信息进行相加,再进行解扩,再解密,然后再计算误码率,就这些了,只是在调制那里进行不下去,还有高斯噪声加不上呀!我着急,请您帮忙,拜托了!
发表于 2006-4-17 17:18 | 显示全部楼层

回复:(xianjuan)求救,该了很久改不出来呀!拜托了...

<P>把你正确的程序贴一下,你说得好乱,不知道怎么个意思</P>
 楼主| 发表于 2006-4-22 11:05 | 显示全部楼层
  1. f_data=1;
  2. f_chip=11;
  3. fc=220;
  4. fs=3*fc;
  5. N=fs/f_chip;
  6. data_length=5000;
  7. M=2;
  8. num_of_user=4;
  9. matches=0;
  10. errors=0;
  11. count=1;
  12. SNRpbit=0;
  13. SNR=SNRpbit;

  14. rand('state',sum(100*clock));
  15. randn('state',sum(100*clock));
  16. numplot=100;
  17. msg_unsprd=randsrc(data_length,num_of_user,[0:M-1]);
  18. PN_seq=randsrc(11,num_of_user,[0:1]);

  19. for s=1:num_of_user
  20. j=1;
  21. for i=1:data_length
  22. for k=j:j+f_chip-1
  23. mdg_coded(s,k)=msg_unsprd(i,s);
  24. end;
  25. msg_spread(s,[j:(j+f_chip-1)])=xor(msg_coded(s,[j:(j+f_chip-1)])',PN_seq([1:f_chip],s));
  26. j=f_chip*i+1;
  27. end;
  28. end;
  29. len_of_spread=length(msg_spread);

  30. msg_tr=zeros(num_of_user,data_length*f_chip*N);
  31. for s=1:num_of_user
  32. msg_tr(s,:)=dmod(msg_spread(s,:),fc,f_chip,fs,'psk','M');
  33. end;
  34. len_of_tr=length(msg_tr);

  35. for SNRpbit=0:1:7
  36. SNR=SNRpbit;
  37. rand('state',sum(100*clock));
  38. randn('state',sum(100*clock));

  39. msg_rec_data=zeros(num_of_user,len_of_tr);
  40. sum_1=zeros(1,len_of_tr);
  41. msg_received=zeros(1,len_of_tr);

  42. for s=1:num_of_user
  43. msg_rec_data(s,:)=awgn(msg_tr(s,:),SNR-10*log10(N),'measured','dB');
  44. for i=1:data_length
  45. sum_1=sum_1+msg_rec_data(s,i);
  46. msg_received=sum_1;
  47. end;
  48. end;

  49. msg_demoded=ddemod(msg_received,fc,f_chip,fs,'measured','dB');

  50. j=1;
  51. for i=1:data_length
  52. msg_de_spread(j:(j+f_chip-1))=xor(msg_received(j:(j+f_chip-1))',PN_seq(1:f_chip,1));
  53. j=f_chip*i+1;
  54. end;

  55. j=1;
  56. for i=1:data_length
  57. sum_2=0;
  58. for k=j:j+f_chip-1
  59. sum_2=sum_2+msg_de_spread(k);
  60. end;
  61. if(sum_2>=7)
  62. msg_de_spread(i)=1;
  63. else
  64. msg_de_spread(i)=0;
  65. end;
  66. j=f_chip*i+1;
  67. end;

  68. for i=1:data_length
  69. if(msg_de_spread(i)==msg_unsprd(i,1))
  70. matches=matches+1;
  71. else
  72. errors=errors+1;
  73. end;
  74. end;
  75. BER_awgn(count)=errors/data_length;
  76. count=count+1;
  77. errors=0;
  78. end;
  79. end;
  80. X=[1:8];
  81. semilogy(X,BER_awgn(count),'-.b*');
  82. hold on;
  83. grid on;
复制代码
 楼主| 发表于 2006-4-22 11:06 | 显示全部楼层

拜托了

拜托了,帮忙呀!
 楼主| 发表于 2006-4-22 11:07 | 显示全部楼层

happy 救命呀!

拜托您了,急需!
发表于 2006-4-23 10:26 | 显示全部楼层

回复:(xianjuan)求救,该了很久改不出来呀!拜托了...

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-12 23:11 , Processed in 0.062898 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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