当前位置:
首页 >
Matlab基本的数字基带信号APP界面(GUI入门)
发布时间:2024/3/7
43
豆豆
生活随笔
收集整理的这篇文章主要介绍了
Matlab基本的数字基带信号APP界面(GUI入门)
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
Matlab基本的数字基带信号APP界面(GUI入门)
- 基本的数字基带信号
- 单极性不归零波形
- 双极性不归零波形
- 单极性归零波形
- 双极性归零波形
- 差分波形
- 多进制波形
- 界面
- 总代码
基本的数字基带信号
参考:通信原理
单极性不归零波形
gt1=ones(1,N_sample);gt2=zeros(1,N_sample);se1=[];for i=1:N %码元数if signal(i)==1se1=[se1 gt1];elsese1=[se1,gt2];endend结果:
双极性不归零波形
gt1=ones(1,N_sample);gt2=zeros(1,N_sample)-1;se1=[];for i=1:Nif signal(i)==1se1=[se1 gt1];elsese1=[se1,gt2];endend结果:
单极性归零波形
gt1=[ones(1,N_sample/2),zeros(1,N_sample/2)];gt2=zeros(1,N_sample);se1=[];for i=1:Nif signal(i)==1se1=[se1 gt1];elsese1=[se1,gt2];endend结果:
双极性归零波形
gt1=[ones(1,N_sample/2),zeros(1,N_sample/2)];gt2=[zeros(1,N_sample/2)-1,zeros(1,N_sample/2)];se1=[];for i=1:Nif signal(i)==1se1=[se1 gt1];elsese1=[se1,gt2];endend差分波形
可消除设备初始状态影响。
解决载波相位模糊(相位调制)。
传号差分:输入为1时,编码波形相对于前一代码电平产生跳变;输入为0时,波形不产生跳变。
空号差分:输入为0时,编码波形相对于前一代码电平产生跳变;输入为1时,波形不产生跳变。
多进制波形
n=2;%进制aa=reshape(signal,[n,length(signal)/n]);aa=num2str(aa');sig=[];se1=[];gt1=ones(1,N_sample);for i=1:length(signal)/na=strrep(aa(i,:),' ','');%替代空格a=bin2dec(a);%二进制-》十进制sig=[sig,a];se1=[se1,gt1*a-1.5];endN=length(signal)/n;t=0:dt:(N*N_sample-1)*dt;%序列传输时间set(app.TextArea_sig,'Value',num2str(uint8(sig)));结果:
界面
输入的信号为ASCII码,转为对应的二进制数字,得到信号,然后显示在信号那个文本框里。
选择基带波形,当信号为偶数个时有多进制(4进制)的选项,为奇数个时没有。
点击开始后,会根据信号输出对应的基带波形。
总代码
classdef app_digitBaseSig < matlab.apps.AppBase% Properties that correspond to app componentsproperties (Access = public)UIFigure matlab.ui.FigureASCIIEditFieldLabel matlab.ui.control.LabelASCIIEditField matlab.ui.control.EditFieldUIAxes_sig matlab.ui.control.UIAxesUIAxes_res matlab.ui.control.UIAxesLabel matlab.ui.control.LabelDropDown matlab.ui.control.DropDownButton_start matlab.ui.control.ButtonLabel_2 matlab.ui.control.LabelTextArea_sig matlab.ui.control.TextAreaendmethods (Access = private)% Value changed function: ASCIIEditFieldfunction ASCIIEditFieldValueChanged(app, event)value = app.ASCIIEditField.Value;global signal;n=length(value);%输入字符个数signal1=dec2bin(value);signal=[];for i=1:nfor j=1:size(signal1,2)signal=[signal,str2num(signal1(i,j))];endendset(app.TextArea_sig,'Value',num2str(uint8(signal)));%显示码元plot(app.UIAxes_sig,1:length(signal),signal,'b.');ylim(app.UIAxes_sig,[-0.5,1.5]);if mod(length(signal),2)~=0set(app.DropDown,'Items',{'单极性(不归0)';'双极性(不归0)';'单极性归0';'双极性归0';'差分波形(传号)';'差分波形(空号)'});elseset(app.DropDown,'Items',{'单极性(不归0)';'双极性(不归0)';'单极性归0';'双极性归0';'差分波形(传号)';'差分波形(空号)';'多进制波形(4进制)'})endend% Button pushed function: Button_startfunction Button_startPushed(app, event)%%生成单个码元global signal;Ts=1;%码元周期N_sample=128;%单个码元抽样点数dt=Ts/N_sample;%抽样时间间隔N=length(signal);%码元数t=0:dt:(N*N_sample-1)*dt;%序列传输时间method=get(app.DropDown,'Value');if method=='1'%单极性不归0gt1=ones(1,N_sample);gt2=zeros(1,N_sample);se1=[];for i=1:Nif signal(i)==1se1=[se1 gt1];elsese1=[se1,gt2];endendelseif method=='2'%双极性不归0gt1=ones(1,N_sample);gt2=zeros(1,N_sample)-1;se1=[];for i=1:Nif signal(i)==1se1=[se1 gt1];elsese1=[se1,gt2];endendelseif method=='3'%单极性归0gt1=[ones(1,N_sample/2),zeros(1,N_sample/2)];gt2=zeros(1,N_sample);se1=[];for i=1:Nif signal(i)==1se1=[se1 gt1];elsese1=[se1,gt2];endendelseif method=='4'%双极性归0gt1=[ones(1,N_sample/2),zeros(1,N_sample/2)];gt2=[zeros(1,N_sample/2)-1,zeros(1,N_sample/2)];se1=[];for i=1:Nif signal(i)==1se1=[se1 gt1];elsese1=[se1,gt2];endendelseif method=='5'%传号差分se1=[];gt1=-ones(1,N_sample);for i=1:Nif signal(i)==1gt1=-gt1;se1=[se1 gt1];elsese1=[se1,gt1];endendelseif method=='6'%空号差分se1=[];gt1=-ones(1,N_sample);for i=1:Nif signal(i)==0gt1=-gt1;se1=[se1 gt1];elsese1=[se1,gt1];endendelse %4进制n=2;%进制aa=reshape(signal,[n,length(signal)/n]);aa=num2str(aa');sig=[];se1=[];gt1=ones(1,N_sample);for i=1:length(signal)/na=strrep(aa(i,:),' ','');%替代空格a=bin2dec(a);%二进制-》十进制sig=[sig,a];se1=[se1,gt1*a-1.5];endN=length(signal)/n;t=0:dt:(N*N_sample-1)*dt;%序列传输时间set(app.TextArea_sig,'Value',num2str(uint8(sig)));endplot(app.UIAxes_res,t,se1);endend% App initialization and constructionmethods (Access = private)% Create UIFigure and componentsfunction createComponents(app)% Create UIFigureapp.UIFigure = uifigure;app.UIFigure.Position = [100 100 640 480];app.UIFigure.Name = 'UI Figure';% Create ASCIIEditFieldLabelapp.ASCIIEditFieldLabel = uilabel(app.UIFigure);app.ASCIIEditFieldLabel.HorizontalAlignment = 'right';app.ASCIIEditFieldLabel.FontSize = 8;app.ASCIIEditFieldLabel.Position = [15 439 98 22];app.ASCIIEditFieldLabel.Text = '输入信号(ASCII码)';% Create ASCIIEditFieldapp.ASCIIEditField = uieditfield(app.UIFigure, 'text');app.ASCIIEditField.ValueChangedFcn = createCallbackFcn(app, @ASCIIEditFieldValueChanged, true);app.ASCIIEditField.FontSize = 8;app.ASCIIEditField.Position = [128 439 100 22];% Create UIAxes_sigapp.UIAxes_sig = uiaxes(app.UIFigure);title(app.UIAxes_sig, '信号序列')xlabel(app.UIAxes_sig, 't')ylabel(app.UIAxes_sig, 'Y')app.UIAxes_sig.PlotBoxAspectRatio = [1 0.221448467966574 0.221448467966574];app.UIAxes_sig.TitleFontWeight = 'bold';app.UIAxes_sig.Position = [1 199 625 186];% Create UIAxes_resapp.UIAxes_res = uiaxes(app.UIFigure);title(app.UIAxes_res, '基带信号')xlabel(app.UIAxes_res, 't')ylabel(app.UIAxes_res, 'Y')app.UIAxes_res.PlotBoxAspectRatio = [1 0.221448467966574 0.221448467966574];app.UIAxes_res.TitleFontWeight = 'bold';app.UIAxes_res.Position = [1 1 625 185];% Create Labelapp.Label = uilabel(app.UIFigure);app.Label.HorizontalAlignment = 'right';app.Label.Position = [245 439 77 22];app.Label.Text = '数字基带信号';% Create DropDownapp.DropDown = uidropdown(app.UIFigure);app.DropDown.Items = {'单极性(不归0)', '双极性(不归0)', '单极性归0', '双极性归0', '差分波形(传号)', '差分波形(空号)', '多进制波形(4进制)'};app.DropDown.ItemsData = {'1', '2', '3', '4', '5', '6', '7'};app.DropDown.Position = [337 439 100 22];app.DropDown.Value = '1';% Create Button_startapp.Button_start = uibutton(app.UIFigure, 'push');app.Button_start.ButtonPushedFcn = createCallbackFcn(app, @Button_startPushed, true);app.Button_start.Position = [526 436 100 25];app.Button_start.Text = '开始';% Create Label_2app.Label_2 = uilabel(app.UIFigure);app.Label_2.HorizontalAlignment = 'right';app.Label_2.Position = [51 402 29 22];app.Label_2.Text = '信号';% Create TextArea_sigapp.TextArea_sig = uitextarea(app.UIFigure);app.TextArea_sig.Editable = 'off';app.TextArea_sig.Position = [95 401 531 24];endendmethods (Access = public)% Construct appfunction app = app_digitBaseSig% Create and configure componentscreateComponents(app)% Register the app with App DesignerregisterApp(app, app.UIFigure)if nargout == 0clear appendend% Code that executes before app deletionfunction delete(app)% Delete UIFigure when app is deleteddelete(app.UIFigure)endend end初学者,请多多指教!如有错误,请指出。
总结
以上是生活随笔为你收集整理的Matlab基本的数字基带信号APP界面(GUI入门)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: CSDN官方力推的《用户社区》,值得你来
- 下一篇: c语言教程——简单易懂