Matlab基本的数字基带信号APP界面(GUI入门)
生活随笔
收集整理的這篇文章主要介紹了
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语言教程——简单易懂