ad

【数字信号调制】基于matlab GUI BPSK调制+解调【含Matlab源码 644期】-英雄云拓展知识分享

匿名投稿 345 2024-02-01

【摘要】 一、获取代码方式 获取代码方式1: 完整代码已上传我的资源: 【数字信号调制】基于matlab GUI BPSK调制+解调【含Matlab源码 644期】 获取代码方式2: 通过订阅紫极神光博客付费专...

一、获得代码方式

获得代码方式1:
完全代码已上传我的资源: 【数字信号调制】基于matlab GUI BPSK调制+解调【含Matlab源码 644期】

获得代码方式2:
经过定阅紫极神光博客付费专栏,凭支付凭证,私信博主,可取得此代码。

备注:定阅紫极神光博客付费专栏,可免费取得1份代码(行之有效的期为定阅日起,3天内行之有效的);

2、BPSK简介


1 BPSK调制进程


1.1 用旋转向量的角度理解BPSK调制


2 频谱效力
2进制相移键控的频谱效力是1bps/hz
计算方法

3 缺点
频谱效力低,我们要想办法提高频谱效力

3、部份源代码

function varargout = GUI_BPSK(varargin)

【数字信号调制】基于matlab GUI BPSK调制+解调【含Matlab源码 644期】-英雄云拓展知识分享

% GUI_BPSK MATLAB code for GUI_BPSK.fig

% GUI_BPSK, by itself, creates a new GUI_BPSK or raises the existing

% singleton*.

%

% H = GUI_BPSK returns the handle to a new GUI_BPSK or the handle to

% the existing singleton*.

%

% GUI_BPSK('CALLBACK',hObject,eventData,handles,...) calls the local

% function named CALLBACK in GUI_BPSK.M with the given input arguments.

%

% GUI_BPSK('Property','Value',...) creates a new GUI_BPSK or raises the

% existing singleton*. Starting from the left, property value pairs are

% applied to the GUI before GUI_BPSK_OpeningFcn gets called. An

% unrecognized property name or invalid value makes property application

% stop. All inputs are passed to GUI_BPSK_OpeningFcn via varargin.

%

% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one

% instance to run (singleton)".

%

% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help GUI_BPSK

% Last Modified by GUIDE v2.5 03-Dec⑵018 19:45:43

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @GUI_BPSK_OpeningFcn, ...

'gui_OutputFcn', @GUI_BPSK_OutputFcn, ...

'gui_LayoutFcn', [] , ...

'gui_Callback', []);

if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:});

end

% End initialization code - DO NOT EDIT

% --- Executes just before GUI_BPSK is made visible.

function GUI_BPSK_OpeningFcn(hObject, eventdata, handles, varargin)

% This function has no output args, see OutputFcn.

% hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% varargin command line arguments to GUI_BPSK (see VARARGIN)

% Choose default command line output for GUI_BPSK

handles.output = hObject;

s=round(rand(1,100)); %生成2进制基带数据并画出基带信号on;

Ps=1;

M=2; %BPSK星座 %BPSK格雷码比特映照

for j=1:1:100

for m=1:M

if isequal(s(j),Maptable(m,:))

Qu(j)= m*pi;

x(j)=A(m);

break

end

end

end %基带数据s携带的信息映照到X[n]

Am=1; %载波调制

T=0.0001; fc=6/T;

Smpl=1000;

deltaT=T/Smpl; %连续时间离散化间隔

Ns=5; %画出Ns个符号的波形

t=deltaT:deltaT:Ns*T; %离散时间序列

for j=1:Ns

index=(j⑴)*Smpl+1:j*Smpl; %第i个符号对应的离散时间序号

g(index)=1; %矩形脉冲成型

X(index)=Am*g(index).*cos(2*pi*fc*t(index)+Qu(ceil(index/50.01))); %载波调制信号

end

%subplot(313);plot(t,X);title('BPSK调制信号波形');

SNR_dB=15; %定义内涵信噪比

SNR=10^(SNR_dB/10); %定义内涵线性信噪比

Ps=1; %发射功率

Pn=Ps/SNR; %噪声方差

z=sqrt(Pn/2)*(randn(size(x))+randn(size(x))*i); %生成白噪声

h=1; %AWGN信道下,信道增益h=1

y=h*x+z; %基带接受信号

%figure(2);subplot(211);scatter(real(y(1:10)),imag(y(1:10)),'filled');title('BPSK接收星座%y的星座j=1:length(y)

Dist=abs(y(j)-A); %第j个接受信号与各星座 [~,Index]=min(Dist); %找到距离最近的点

x_est(j)=A(Index); %得到发射调制信号的预估

s_est(j)=Maptable(Index,:); %得到比特数据的预估

end

W=1:100;

%subplot(212);stem(W,s_est);title('BPSK解调后信号');

for n=1:15

Pe_t(n)=sqrt(2)/4*erfc(sqrt(2*n));

Pb_t(n)=sqrt(2)/4*erfc(sqrt(2*n));

end

PESUM=0;

PBSUM=0;

for n=1:15

for m=1:1000

SNR=n;

Ps=1;

Pn=Ps/SNR;

z=sqrt(Pn/2)*(randn(size(x))+randn(size(x))*i);

h=1;

y=h*x+z;

for j=1:length(y)

Dist=abs(y(j)-A);

[~,Index]=min(Dist);

x_est(j)=A(Index);

s_est(j)=Maptable(Index,:);

end

for k=1:100

if(s(k)+s_est(k)==1)

PBSUM=PBSUM+1;

end

end

for k1=1:100

if isequal(x(k1),x_est(k1))

PESUM=PESUM+0;

else

PESUM=PESUM+1;

end

end

end

Pe(n)=PESUM/1000/100;

Pb(n)=PBSUM/1000/100;

PESUM=0;

PBSUM=0;

end

SNRX=1:15;

%figure(3);plot(SNRX,Pb); hold on;plot(SNRX,Pe);

%scatter(SNRX,Pe_t);scatter(SNRX,Pb_t, 'filled');xlabel('信噪比 SNR(r/dB)');title('AWGN信道下误码率与误符号率曲线');

%axis([1 15 0 0.15]);grid on;hold off;

H=sqrt(1/2)*(randn+i*randn);

Y=H*x+z;

%figure(4);subplot(211);scatter(real(Y(1:10)),imag(Y(1:10)),'filled');title('BPSK信道均衡前星座n=1:15

for m=1:1000

SNR=n;

Ps=1;

Pn=Ps/SNR;

z=sqrt(Pn/2)*(randn(size(x))+randn(size(x))*i);

Y1=(H*x+z)/H;

for j=1:length(Y1)

Dist=abs(Y1(j)-A);

[~,Index]=min(Dist);

x_est1(j)=A(Index);

s_est1(j)=Maptable(Index,:);

end

for k=1:100

if(s(k)+s_est1(k)==1)

PBSUM1=PBSUM1+1;

end

end

for k1=1:100

if isequal(x(k1),x_est1(k1))

PESUM1=PESUM1+0;

else

PESUM1=PESUM1+1;

end

end

end

Pe1(n)=PESUM1/1000/100;

Pb1(n)=PESUM1/1000/100;

PESUM1=0;

PBSUM1=0;

end

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199

4、运行结果





5、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 沈再阳.精通MATLAB信号处理[M].清华大学出版社,2015.
[2]高宝建,彭进业,王琳,潘建寿.信号与系统——使用MATLAB分析与实现[M].清华大学出版社,2020.
[3]王文光,魏少明,任欣.信号处理与系统分析的MATLAB实现[M].电子工业出版社,2018.


🌟 选择英雄云hpapaas 开启自动化、智能化企业转型未来 🌐       >>>>作为一款提供hpaPaaS平台服务的英雄云,有什么优势呢?面对数字化转型的挑战与机遇,选择一个适合自己企业的高度信息化、智能化和自动化的管理系统尤为重要。英雄云是一个值得考虑的选择。英雄云提供了一系列独特的优势,使其成为企业智能管理的首选。下面是英雄云的八大优势

1. 无需代码操作 💻

: 英雄云的平台无需编程知识,即可操作自定义的管理系统:ERP系统、CRM系统、进销存系统、人事行政OA系统、WMS系统等。这意味着用户无需拥有编程技能,也能轻松操控自己的系统。

2. 高度可定制性 🛠️

: 英雄云允许用户根据自己的业务需求、企业规模、成员人数、所需系统等等,进行高度定制服务;三大业务引擎:云表单(进阶版Excel)、工作流程(智能自动触发流程)以及仪表盘(可视化报表),帮助企业进行更简易的业务操作。

3. 减免重复工作 🔁

:无论是数据录入、审批流程还是报表生成,都可以轻松自动化,使员工能够专注于更有价值的任务。这种减免重复工作的方式不仅提高了工作效率,还降低了错误发生的可能性,为企业节省了时间和资源。

4. 生态系统集成 🌍

: 英雄云与其他常用企业应用和工具具有良好的生态系统集成能力,可以轻松集成与第三方系统,如财务软件、邮件服务等,实现全面的业务支持。

5. 数据分析与智能决策 📊

: 英雄云提供先进的数据分析工具如数据加工工厂,帮助用户更好地理解业务趋势和数据。这使得企业能够做出更明智的战略决策,优化业务流程。

6. 持续更新和改进

: 英雄云不断进行系统的更新和改进,以适应不断变化的业务环境和技术趋势。这意味着您始终能够使用最新的功能和性能提升。

7. 多样化部署 🌐

: 英雄云提供了多样化的部署选项,用户可以根据自身需求选择合适的部署方式,无需自主运维。无论是选择云端部署、私有云部署还是本地部署,英雄云都能提供灵活的解决方案。这意味着用户无需担心硬件维护、系统更新等问题,能够更专注于业务运营,降低了IT运营成本和风险。

8. 免费版本 💸

: 英雄云提供免费版本,用户可以在免费版本中获得一定数量的表单数据量和企业数据总量,为小型企业提供了经济实惠的选择。

选择英雄云作为您的数字化管理系统,将带来高度的灵活性、可定制性和效率提升。不管您的企业规模如何,英雄云都能满足您的需求,助力您的仓库管理更上一层楼。不妨注册一个英雄云账户,亲自体验这些优势,并让您的企业管理更加智能化和高效化


免责声明:

本网址(www.yingxiongyun.com)发布的材料主要源于独立创作和网友匿名投稿。此处提供的所有信息仅供参考之用。我们致力于提供准确且可信的信息,但不对材料的完整性或真实性作出任何保证。用户应自行验证相关信息的正确性,并对其决策承担全部责任。对于由于信息的错误、不准确或遗漏所造成的任何损失,本网址不承担任何法律责任。本网站所展示的所有内容,如文字、

上一篇:Java 鸡兔同笼(赶快给你的孩子写出这个算法吧)-英雄云拓展知识分享
下一篇:【云驻共创】华为云:MetaStudio数字内容生产线,让虚拟世界与现实世界无缝融会
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×