Matlab基本的数字基带信号APP界面(GUI入门)
生活随笔
收集整理的這篇文章主要介紹了
Matlab基本的数字基带信号APP界面(GUI入门)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Matlab基本的數(shù)字基帶信號(hào)APP界面(GUI入門(mén))
- 基本的數(shù)字基帶信號(hào)
- 單極性不歸零波形
- 雙極性不歸零波形
- 單極性歸零波形
- 雙極性歸零波形
- 差分波形
- 多進(jìn)制波形
- 界面
- 總代碼
基本的數(shù)字基帶信號(hào)
參考:通信原理
單極性不歸零波形
gt1=ones(1,N_sample);gt2=zeros(1,N_sample);se1=[];for i=1:N %碼元數(shù)if signal(i)==1se1=[se1 gt1];elsese1=[se1,gt2];endend結(jié)果:
雙極性不歸零波形
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結(jié)果:
單極性歸零波形
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結(jié)果:
雙極性歸零波形
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差分波形
可消除設(shè)備初始狀態(tài)影響。
解決載波相位模糊(相位調(diào)制)。
傳號(hào)差分:輸入為1時(shí),編碼波形相對(duì)于前一代碼電平產(chǎn)生跳變;輸入為0時(shí),波形不產(chǎn)生跳變。
空號(hào)差分:輸入為0時(shí),編碼波形相對(duì)于前一代碼電平產(chǎn)生跳變;輸入為1時(shí),波形不產(chǎn)生跳變。
多進(jìn)制波形
n=2;%進(jìn)制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);%二進(jìn)制-》十進(jìn)制sig=[sig,a];se1=[se1,gt1*a-1.5];endN=length(signal)/n;t=0:dt:(N*N_sample-1)*dt;%序列傳輸時(shí)間set(app.TextArea_sig,'Value',num2str(uint8(sig)));結(jié)果:
界面
輸入的信號(hào)為ASCII碼,轉(zhuǎn)為對(duì)應(yīng)的二進(jìn)制數(shù)字,得到信號(hào),然后顯示在信號(hào)那個(gè)文本框里。
選擇基帶波形,當(dāng)信號(hào)為偶數(shù)個(gè)時(shí)有多進(jìn)制(4進(jìn)制)的選項(xiàng),為奇數(shù)個(gè)時(shí)沒(méi)有。
點(diǎn)擊開(kāi)始后,會(huì)根據(jù)信號(hào)輸出對(duì)應(yīng)的基帶波形。
總代碼
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);%輸入字符個(gè)數(shù)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';'差分波形(傳號(hào))';'差分波形(空號(hào))'});elseset(app.DropDown,'Items',{'單極性(不歸0)';'雙極性(不歸0)';'單極性歸0';'雙極性歸0';'差分波形(傳號(hào))';'差分波形(空號(hào))';'多進(jìn)制波形(4進(jìn)制)'})endend% Button pushed function: Button_startfunction Button_startPushed(app, event)%%生成單個(gè)碼元global signal;Ts=1;%碼元周期N_sample=128;%單個(gè)碼元抽樣點(diǎn)數(shù)dt=Ts/N_sample;%抽樣時(shí)間間隔N=length(signal);%碼元數(shù)t=0:dt:(N*N_sample-1)*dt;%序列傳輸時(shí)間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'%傳號(hào)差分se1=[];gt1=-ones(1,N_sample);for i=1:Nif signal(i)==1gt1=-gt1;se1=[se1 gt1];elsese1=[se1,gt1];endendelseif method=='6'%空號(hào)差分se1=[];gt1=-ones(1,N_sample);for i=1:Nif signal(i)==0gt1=-gt1;se1=[se1 gt1];elsese1=[se1,gt1];endendelse %4進(jìn)制n=2;%進(jìn)制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);%二進(jìn)制-》十進(jìn)制sig=[sig,a];se1=[se1,gt1*a-1.5];endN=length(signal)/n;t=0:dt:(N*N_sample-1)*dt;%序列傳輸時(shí)間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 = '輸入信號(hào)(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, '信號(hào)序列')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, '基帶信號(hào)')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 = '數(shù)字基帶信號(hào)';% Create DropDownapp.DropDown = uidropdown(app.UIFigure);app.DropDown.Items = {'單極性(不歸0)', '雙極性(不歸0)', '單極性歸0', '雙極性歸0', '差分波形(傳號(hào))', '差分波形(空號(hào))', '多進(jìn)制波形(4進(jìn)制)'};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 = '開(kāi)始';% 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 = '信號(hào)';% 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初學(xué)者,請(qǐng)多多指教!如有錯(cuò)誤,請(qǐng)指出。
總結(jié)
以上是生活随笔為你收集整理的Matlab基本的数字基带信号APP界面(GUI入门)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: CSDN官方力推的《用户社区》,值得你来
- 下一篇: c语言教程——简单易懂