Initial commit
This commit is contained in:
commit
bb7f798573
BIN
0_Integration/original audio.zip
Normal file
BIN
0_Integration/original audio.zip
Normal file
Binary file not shown.
Binary file not shown.
BIN
0_Integration/source_audio.wav
Normal file
BIN
0_Integration/source_audio.wav
Normal file
Binary file not shown.
BIN
0_Integration/superlab_demo.slx
Normal file
BIN
0_Integration/superlab_demo.slx
Normal file
Binary file not shown.
3
0_Integration/superlab_demo_init.m
Normal file
3
0_Integration/superlab_demo_init.m
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
IO_select = 0;
|
||||||
|
Choice_1=Simulink.Variant('IO_select==0');
|
||||||
|
Choice_2=Simulink.Variant('IO_select==1');
|
BIN
A_AD_DA/A1.slx
Normal file
BIN
A_AD_DA/A1.slx
Normal file
Binary file not shown.
BIN
A_AD_DA/A2.slx
Normal file
BIN
A_AD_DA/A2.slx
Normal file
Binary file not shown.
BIN
B_ChannelCoding/B1.slx
Normal file
BIN
B_ChannelCoding/B1.slx
Normal file
Binary file not shown.
BIN
B_ChannelCoding/B2.slx
Normal file
BIN
B_ChannelCoding/B2.slx
Normal file
Binary file not shown.
BIN
C_BaseBand/C1.slx
Normal file
BIN
C_BaseBand/C1.slx
Normal file
Binary file not shown.
BIN
C_BaseBand/C2.slx
Normal file
BIN
C_BaseBand/C2.slx
Normal file
Binary file not shown.
BIN
D_Broadband/D1.slx
Normal file
BIN
D_Broadband/D1.slx
Normal file
Binary file not shown.
BIN
D_Broadband/D2.slx
Normal file
BIN
D_Broadband/D2.slx
Normal file
Binary file not shown.
BIN
D_Broadband/D3.slx
Normal file
BIN
D_Broadband/D3.slx
Normal file
Binary file not shown.
BIN
E_Piconet/E1.slx
Normal file
BIN
E_Piconet/E1.slx
Normal file
Binary file not shown.
BIN
E_commbluetoothvoice_Matlab_2016b/commbluetoothfreqhop.slx
Executable file
BIN
E_commbluetoothvoice_Matlab_2016b/commbluetoothfreqhop.slx
Executable file
Binary file not shown.
BIN
E_commbluetoothvoice_Matlab_2016b/commbluetoothvoice.slx
Executable file
BIN
E_commbluetoothvoice_Matlab_2016b/commbluetoothvoice.slx
Executable file
Binary file not shown.
73
E_commbluetoothvoice_Matlab_2016b/commbluetoothvoice_cb.m
Executable file
73
E_commbluetoothvoice_Matlab_2016b/commbluetoothvoice_cb.m
Executable file
@ -0,0 +1,73 @@
|
|||||||
|
function commbluetoothvoice_cb
|
||||||
|
%COMMBLUETOOTHVOICE_CB Sets up the Model Mask Parameters in the
|
||||||
|
% Bluetooth Voice Transmission example (commbluetoothvoice.slx) and saves
|
||||||
|
% it to the workspace
|
||||||
|
|
||||||
|
% Copyright 1996-2011 The MathWorks, Inc.
|
||||||
|
|
||||||
|
% Retrieves user information and assigns packet type
|
||||||
|
systemParams = [bdroot(gcb) '/Model Parameters'];
|
||||||
|
h=get_param(systemParams,'MaskValues');
|
||||||
|
if(h{1,1}=='HV1')
|
||||||
|
set_param(systemParams,'MaskVisibilities',{'on','off','off'});
|
||||||
|
HV_Type=1;
|
||||||
|
assignin('base','HV_Type',1);
|
||||||
|
assignin('base','Slot_Pair',1);
|
||||||
|
elseif(h{1,1}=='HV2')
|
||||||
|
HV_Type=2;
|
||||||
|
assignin('base','HV_Type',2);
|
||||||
|
set_param(systemParams,'MaskVisibilities',{'on','on','off'});
|
||||||
|
if(h{2,1}== '1&2')
|
||||||
|
Slot_Pair=1;
|
||||||
|
assignin('base','Slot_Pair',1);
|
||||||
|
else
|
||||||
|
Slot_Pair=2;
|
||||||
|
assignin('base','Slot_Pair',2);
|
||||||
|
end
|
||||||
|
|
||||||
|
else
|
||||||
|
set_param(systemParams,'MaskVisibilities',{'on','off','on'});
|
||||||
|
HV_Type=3;
|
||||||
|
assignin('base','HV_Type',3)
|
||||||
|
if(h{3,1}=='1&2')
|
||||||
|
Slot_Pair=1;
|
||||||
|
assignin('base','Slot_Pair',1);
|
||||||
|
elseif(h{3,1}=='3&4')
|
||||||
|
Slot_Pair=2;
|
||||||
|
assignin('base','Slot_Pair',2);
|
||||||
|
else
|
||||||
|
Slot_Pair=3;
|
||||||
|
assignin('base','Slot_Pair',3);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
% Define Slot_Ts and other variables depending on packet type
|
||||||
|
Slot_Ts=(1/1600);
|
||||||
|
assignin('base','Slot_Ts', (1/1600));
|
||||||
|
switch HV_Type
|
||||||
|
case 1
|
||||||
|
assignin('base','Tx_Ts',Slot_Ts*2);
|
||||||
|
assignin('base','Num_Slots_Rate',2);
|
||||||
|
assignin('base','Num_Payload_Bits',80);
|
||||||
|
assignin('base','Slot_Enable_Phase',0); % Slot Pair
|
||||||
|
case 2
|
||||||
|
assignin('base','Tx_Ts',Slot_Ts*4);
|
||||||
|
assignin('base','Num_Slots_Rate',4);
|
||||||
|
assignin('base','Num_Payload_Bits',160);
|
||||||
|
if Slot_Pair == 3
|
||||||
|
error(message('comm:commbluetoothvoice_cb:InvalidSlot'));
|
||||||
|
end;
|
||||||
|
assignin('base','Slot_Enable_Phase',Slot_Pair*2-2); % Slot Pair
|
||||||
|
case 3
|
||||||
|
assignin('base','Tx_Ts',Slot_Ts*6);
|
||||||
|
assignin('base','Num_Slots_Rate',6);
|
||||||
|
assignin('base','Num_Payload_Bits',240);
|
||||||
|
assignin('base','Slot_Enable_Phase',Slot_Pair*2-2); % Slot Pair
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
41
E_commbluetoothvoice_Matlab_2016b/commbluetoothvoice_init.m
Executable file
41
E_commbluetoothvoice_Matlab_2016b/commbluetoothvoice_init.m
Executable file
@ -0,0 +1,41 @@
|
|||||||
|
%COMMBLUETOOTHVOICE_INIT Initializes variables for Bluetooth Voice Transmission
|
||||||
|
% example (commbluetoothvoice.slx)
|
||||||
|
|
||||||
|
% Copyright 1996-2012 The MathWorks, Inc.
|
||||||
|
|
||||||
|
% Set input wave sample rate to be 8kHz
|
||||||
|
Input_Fs=8000;
|
||||||
|
sigin = audioread('commbluetoothvoice_input.wav');
|
||||||
|
|
||||||
|
% Coefficients for speech interpolation
|
||||||
|
[y,interp_coeffs]=interp(ones(1,10),8);
|
||||||
|
|
||||||
|
% Header Information
|
||||||
|
% Header_Info=[Slave_Address;Packet_Type;Flow_Control;ARQ;Sequence];
|
||||||
|
Slave_Address= [1 0 1]';
|
||||||
|
Packet_Type= [1 0 1 0]';
|
||||||
|
Flow_Control= [1];
|
||||||
|
ARQ=[1];
|
||||||
|
Sequence=[1];
|
||||||
|
Access_Code=zeros(72,1); Access_Code(1:2:72)=1;
|
||||||
|
|
||||||
|
% Initialize 1,0,1,0, sequence
|
||||||
|
One_Zero_Payload=zeros(240,1);
|
||||||
|
One_Zero_Payload(1:2:240)=1;
|
||||||
|
|
||||||
|
% Set Seeds
|
||||||
|
hop_seed=randseed(1);
|
||||||
|
awgn_channel_seed=randseed(2);
|
||||||
|
awgn_802_seed=randseed(3);
|
||||||
|
rate_802_seed=randseed(4);
|
||||||
|
data_seed=randseed(5);
|
||||||
|
|
||||||
|
% Hop frequency if fixed
|
||||||
|
fixed_hop_freq=20;
|
||||||
|
|
||||||
|
% Assign payload bits
|
||||||
|
Num_Payload_Bits=80;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
BIN
E_commbluetoothvoice_Matlab_2016b/commbluetoothvoice_input.wav
Executable file
BIN
E_commbluetoothvoice_Matlab_2016b/commbluetoothvoice_input.wav
Executable file
Binary file not shown.
BIN
E_commbluetoothvoice_Matlab_2016b/commbluetoothvoice_lib.slx
Executable file
BIN
E_commbluetoothvoice_Matlab_2016b/commbluetoothvoice_lib.slx
Executable file
Binary file not shown.
24
F_Bluetooth/AudioPlayer/license.txt
Normal file
24
F_Bluetooth/AudioPlayer/license.txt
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
Copyright (c) 2015, Juan Pinzon
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are
|
||||||
|
met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in
|
||||||
|
the documentation and/or other materials provided with the distribution
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||||
|
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGE.
|
BIN
F_Bluetooth/AudioPlayer/pruebasonido.fig
Normal file
BIN
F_Bluetooth/AudioPlayer/pruebasonido.fig
Normal file
Binary file not shown.
148
F_Bluetooth/AudioPlayer/pruebasonido.m
Normal file
148
F_Bluetooth/AudioPlayer/pruebasonido.m
Normal file
@ -0,0 +1,148 @@
|
|||||||
|
function varargout = pruebasonido(varargin)
|
||||||
|
% PRUEBASONIDO MATLAB code for pruebasonido.fig
|
||||||
|
% PRUEBASONIDO, by itself, creates a new PRUEBASONIDO or raises the existing
|
||||||
|
% singleton*.
|
||||||
|
%
|
||||||
|
% H = PRUEBASONIDO returns the handle to a new PRUEBASONIDO or the handle to
|
||||||
|
% the existing singleton*.
|
||||||
|
%
|
||||||
|
% PRUEBASONIDO('CALLBACK',hObject,eventData,handles,...) calls the local
|
||||||
|
% function named CALLBACK in PRUEBASONIDO.M with the given input arguments.
|
||||||
|
%
|
||||||
|
% PRUEBASONIDO('Property','Value',...) creates a new PRUEBASONIDO or raises the
|
||||||
|
% existing singleton*. Starting from the left, property value pairs are
|
||||||
|
% applied to the GUI before pruebasonido_OpeningFcn gets called. An
|
||||||
|
% unrecognized property name or invalid value makes property application
|
||||||
|
% stop. All inputs are passed to pruebasonido_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 pruebasonido
|
||||||
|
|
||||||
|
% Last Modified by GUIDE v2.5 11-Sep-2020 17:26:52
|
||||||
|
|
||||||
|
% Begin initialization code - DO NOT EDIT
|
||||||
|
gui_Singleton = 1;
|
||||||
|
gui_State = struct('gui_Name', mfilename, ...
|
||||||
|
'gui_Singleton', gui_Singleton, ...
|
||||||
|
'gui_OpeningFcn', @pruebasonido_OpeningFcn, ...
|
||||||
|
'gui_OutputFcn', @pruebasonido_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 pruebasonido is made visible.
|
||||||
|
function pruebasonido_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 pruebasonido (see VARARGIN)
|
||||||
|
|
||||||
|
% Choose default command line output for pruebasonido
|
||||||
|
handles.output = hObject;
|
||||||
|
|
||||||
|
% Update handles structure
|
||||||
|
guidata(hObject, handles);
|
||||||
|
|
||||||
|
% UIWAIT makes pruebasonido wait for user response (see UIRESUME)
|
||||||
|
% uiwait(handles.figure1);
|
||||||
|
|
||||||
|
set(handles.popupmenu1,'Value',1);
|
||||||
|
init_player(handles,'sigin','Input_Fs');
|
||||||
|
|
||||||
|
|
||||||
|
% --- Outputs from this function are returned to the command line.
|
||||||
|
function varargout = pruebasonido_OutputFcn(hObject, eventdata, handles)
|
||||||
|
% varargout cell array for returning output args (see VARARGOUT);
|
||||||
|
% hObject handle to figure
|
||||||
|
% eventdata reserved - to be defined in a future version of MATLAB
|
||||||
|
% handles structure with handles and user data (see GUIDATA)
|
||||||
|
|
||||||
|
% Get default command line output from handles structure
|
||||||
|
varargout{1} = handles.output;
|
||||||
|
|
||||||
|
function init_player(handles,sig_base_varname, fs_base_varname)
|
||||||
|
%sig_base_varname name of the variable in the base workspace containing the
|
||||||
|
% sound to play
|
||||||
|
%fs_base_varname name of the variable in the base workspace containing the
|
||||||
|
% sampling frequency
|
||||||
|
myGui=guidata(handles.figure1);
|
||||||
|
myGui.freqSam = evalin('base',fs_base_varname);
|
||||||
|
myGui.datasound = evalin('base',sig_base_varname);
|
||||||
|
myGui.player=audioplayer(myGui.datasound,myGui.freqSam);
|
||||||
|
myGui.flag=2;
|
||||||
|
guidata(handles.figure1,myGui)
|
||||||
|
|
||||||
|
|
||||||
|
% --- Executes on button press in play.
|
||||||
|
function play_Callback(hObject, eventdata, handles)
|
||||||
|
% hObject handle to play (see GCBO)
|
||||||
|
% eventdata reserved - to be defined in a future version of MATLAB
|
||||||
|
% handles structure with handles and user data (see GUIDATA)
|
||||||
|
myGui=guidata(handles.figure1);
|
||||||
|
if(myGui.flag==2)
|
||||||
|
myGui.flag=1;
|
||||||
|
disp('2');
|
||||||
|
play(myGui.player);
|
||||||
|
else
|
||||||
|
if(myGui.flag == 1)
|
||||||
|
disp('1');
|
||||||
|
myGui.flag=0;
|
||||||
|
pause(myGui.player);
|
||||||
|
else
|
||||||
|
disp('0');
|
||||||
|
myGui.flag=1;
|
||||||
|
resume(myGui.player)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
guidata(handles.figure1,myGui);
|
||||||
|
|
||||||
|
% --- Executes on button press in stop.
|
||||||
|
function stop_Callback(hObject, eventdata, handles)
|
||||||
|
% hObject handle to stop (see GCBO)
|
||||||
|
% eventdata reserved - to be defined in a future version of MATLAB
|
||||||
|
% handles structure with handles and user data (see GUIDATA)
|
||||||
|
myGui=guidata(handles.figure1);
|
||||||
|
myGui.flag=2;
|
||||||
|
stop(myGui.player);
|
||||||
|
guidata(handles.figure1,myGui);
|
||||||
|
|
||||||
|
|
||||||
|
% --- Executes on selection change in popupmenu1.
|
||||||
|
function popupmenu1_Callback(hObject, eventdata, handles)
|
||||||
|
% hObject handle to popupmenu1 (see GCBO)
|
||||||
|
% eventdata reserved - to be defined in a future version of MATLAB
|
||||||
|
% handles structure with handles and user data (see GUIDATA)
|
||||||
|
|
||||||
|
contents = cellstr(get(hObject,'String')); % returns popupmenu1 contents as cell array
|
||||||
|
selected_signame = contents{get(hObject,'Value')}; % returns selected item from popupmenu1
|
||||||
|
|
||||||
|
init_player(handles,selected_signame,'Input_Fs')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
% --- Executes during object creation, after setting all properties.
|
||||||
|
function popupmenu1_CreateFcn(hObject, eventdata, handles)
|
||||||
|
% hObject handle to popupmenu1 (see GCBO)
|
||||||
|
% eventdata reserved - to be defined in a future version of MATLAB
|
||||||
|
% handles empty - handles not created until after all CreateFcns called
|
||||||
|
|
||||||
|
% Hint: popupmenu controls usually have a white background on Windows.
|
||||||
|
% See ISPC and COMPUTER.
|
||||||
|
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
|
||||||
|
set(hObject,'BackgroundColor','white');
|
||||||
|
end
|
5
F_Bluetooth/AudioPlayer/readme.txt
Normal file
5
F_Bluetooth/AudioPlayer/readme.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
The simple Audio Player GUI from Matlab Central File Exchange
|
||||||
|
https://ch.mathworks.com/matlabcentral/fileexchange/53443-simple-audio-player-gui
|
||||||
|
allowing to play a selected file has been modified to allowing
|
||||||
|
playing the input and output audio signals of the commbluetoothvoice demo.
|
||||||
|
Copyright (c) 2020, HES-SO Valais
|
BIN
F_Bluetooth/commbluetoothfreqhop.slx
Normal file
BIN
F_Bluetooth/commbluetoothfreqhop.slx
Normal file
Binary file not shown.
BIN
F_Bluetooth/commbluetoothvoice.slx
Normal file
BIN
F_Bluetooth/commbluetoothvoice.slx
Normal file
Binary file not shown.
73
F_Bluetooth/commbluetoothvoice_cb.m
Normal file
73
F_Bluetooth/commbluetoothvoice_cb.m
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
function commbluetoothvoice_cb
|
||||||
|
%COMMBLUETOOTHVOICE_CB Sets up the Model Mask Parameters in the
|
||||||
|
% Bluetooth Voice Transmission example (commbluetoothvoice.slx) and saves
|
||||||
|
% it to the workspace
|
||||||
|
|
||||||
|
% Copyright 1996-2011 The MathWorks, Inc.
|
||||||
|
|
||||||
|
% Retrieves user information and assigns packet type
|
||||||
|
systemParams = [bdroot(gcb) '/Model Parameters'];
|
||||||
|
h=get_param(systemParams,'MaskValues');
|
||||||
|
if(h{1,1}=='HV1')
|
||||||
|
set_param(systemParams,'MaskVisibilities',{'on','off','off'});
|
||||||
|
HV_Type=1;
|
||||||
|
assignin('base','HV_Type',1);
|
||||||
|
assignin('base','Slot_Pair',1);
|
||||||
|
elseif(h{1,1}=='HV2')
|
||||||
|
HV_Type=2;
|
||||||
|
assignin('base','HV_Type',2);
|
||||||
|
set_param(systemParams,'MaskVisibilities',{'on','on','off'});
|
||||||
|
if(h{2,1}== '1&2')
|
||||||
|
Slot_Pair=1;
|
||||||
|
assignin('base','Slot_Pair',1);
|
||||||
|
else
|
||||||
|
Slot_Pair=2;
|
||||||
|
assignin('base','Slot_Pair',2);
|
||||||
|
end
|
||||||
|
|
||||||
|
else
|
||||||
|
set_param(systemParams,'MaskVisibilities',{'on','off','on'});
|
||||||
|
HV_Type=3;
|
||||||
|
assignin('base','HV_Type',3)
|
||||||
|
if(h{3,1}=='1&2')
|
||||||
|
Slot_Pair=1;
|
||||||
|
assignin('base','Slot_Pair',1);
|
||||||
|
elseif(h{3,1}=='3&4')
|
||||||
|
Slot_Pair=2;
|
||||||
|
assignin('base','Slot_Pair',2);
|
||||||
|
else
|
||||||
|
Slot_Pair=3;
|
||||||
|
assignin('base','Slot_Pair',3);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
% Define Slot_Ts and other variables depending on packet type
|
||||||
|
Slot_Ts=(1/1600);
|
||||||
|
assignin('base','Slot_Ts', (1/1600));
|
||||||
|
switch HV_Type
|
||||||
|
case 1
|
||||||
|
assignin('base','Tx_Ts',Slot_Ts*2);
|
||||||
|
assignin('base','Num_Slots_Rate',2);
|
||||||
|
assignin('base','Num_Payload_Bits',80);
|
||||||
|
assignin('base','Slot_Enable_Phase',0); % Slot Pair
|
||||||
|
case 2
|
||||||
|
assignin('base','Tx_Ts',Slot_Ts*4);
|
||||||
|
assignin('base','Num_Slots_Rate',4);
|
||||||
|
assignin('base','Num_Payload_Bits',160);
|
||||||
|
if Slot_Pair == 3
|
||||||
|
error(message('comm:commbluetoothvoice_cb:InvalidSlot'));
|
||||||
|
end;
|
||||||
|
assignin('base','Slot_Enable_Phase',Slot_Pair*2-2); % Slot Pair
|
||||||
|
case 3
|
||||||
|
assignin('base','Tx_Ts',Slot_Ts*6);
|
||||||
|
assignin('base','Num_Slots_Rate',6);
|
||||||
|
assignin('base','Num_Payload_Bits',240);
|
||||||
|
assignin('base','Slot_Enable_Phase',Slot_Pair*2-2); % Slot Pair
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
43
F_Bluetooth/commbluetoothvoice_init.m
Normal file
43
F_Bluetooth/commbluetoothvoice_init.m
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
%COMMBLUETOOTHVOICE_INIT Initializes variables for Bluetooth Voice Transmission
|
||||||
|
% example (commbluetoothvoice.slx)
|
||||||
|
|
||||||
|
% Copyright 1996-2012 The MathWorks, Inc.
|
||||||
|
% modified for Matlab 2022a by mag, HES-SO Valais, course SDi
|
||||||
|
|
||||||
|
% Set input wave sample rate to be 8kHz
|
||||||
|
Input_Fs=8000;
|
||||||
|
sigin = audioread('commbluetoothvoice_input.wav');
|
||||||
|
|
||||||
|
% Coefficients for speech interpolation
|
||||||
|
[y,interp_coeffs]=interp(ones(1,10),8);
|
||||||
|
|
||||||
|
% Header Information
|
||||||
|
% Header_Info=[Slave_Address;Packet_Type;Flow_Control;ARQ;Sequence];
|
||||||
|
Slave_Address= [1 0 1]';
|
||||||
|
Packet_Type= [1 0 1 0]';
|
||||||
|
Flow_Control= [1];
|
||||||
|
ARQ=[1];
|
||||||
|
Sequence=[1];
|
||||||
|
Access_Code=zeros(72,1); Access_Code(1:2:72)=1;
|
||||||
|
|
||||||
|
% Initialize 1,0,1,0, sequence
|
||||||
|
One_Zero_Payload=zeros(240,1);
|
||||||
|
One_Zero_Payload(1:2:240)=1;
|
||||||
|
|
||||||
|
% Set Seeds
|
||||||
|
% modified by mag: replaced randseed() by ''
|
||||||
|
hop_seed=1;
|
||||||
|
awgn_channel_seed=2;
|
||||||
|
awgn_802_seed=3;
|
||||||
|
rate_802_seed=4;
|
||||||
|
data_seed=5;
|
||||||
|
|
||||||
|
% Hop frequency if fixed
|
||||||
|
fixed_hop_freq=20;
|
||||||
|
|
||||||
|
% Assign payload bits
|
||||||
|
Num_Payload_Bits=80;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
BIN
F_Bluetooth/commbluetoothvoice_input.wav
Normal file
BIN
F_Bluetooth/commbluetoothvoice_input.wav
Normal file
Binary file not shown.
BIN
F_Bluetooth/commbluetoothvoice_lib.slx
Normal file
BIN
F_Bluetooth/commbluetoothvoice_lib.slx
Normal file
Binary file not shown.
BIN
Z_utils/change_mdl_wks_data_whose_src_is_mdl_file.pdf
Executable file
BIN
Z_utils/change_mdl_wks_data_whose_src_is_mdl_file.pdf
Executable file
Binary file not shown.
BIN
Z_utils/compare_audio_files.slx
Executable file
BIN
Z_utils/compare_audio_files.slx
Executable file
Binary file not shown.
87
Z_utils/plot_complex_sig.m
Executable file
87
Z_utils/plot_complex_sig.m
Executable file
@ -0,0 +1,87 @@
|
|||||||
|
function plot_complex_sig(x,samples_per_symbol,Nmax,plot_style)
|
||||||
|
% plot_complex_sig(x) plots a one-dimensional complex signal as points
|
||||||
|
% in 3-D space : x-axis is the sample (time) axis, y-axis is the real part,
|
||||||
|
% and z-axis the imaginary part
|
||||||
|
%
|
||||||
|
% plot_complex_sig(x,samples_per_symbol) plots all samples in blue and
|
||||||
|
% one sample per symbol in red.
|
||||||
|
%
|
||||||
|
% plot_complex_sig(x,samples_per_symbol,Nmax) only plots the first Nmax
|
||||||
|
% samples.
|
||||||
|
%
|
||||||
|
% plot_complex_sig(x,samples_per_symbol,Nmax,'arrows') use arrows from
|
||||||
|
% (i_sample,0,0) instead of points to represent samples.
|
||||||
|
%
|
||||||
|
% version compatible with Simulink Version 7.3 (R2009a)
|
||||||
|
|
||||||
|
%% process function arguments and perform various tests on function
|
||||||
|
|
||||||
|
nargchk(1,3,nargin);
|
||||||
|
|
||||||
|
if nargin<2
|
||||||
|
samples_per_symbol = 1;
|
||||||
|
end
|
||||||
|
|
||||||
|
if (isstruct(x))
|
||||||
|
if(~isfield(x,'signals'))
|
||||||
|
error('unsupported data type')
|
||||||
|
else
|
||||||
|
if (x.signals.dimensions ~= 1)
|
||||||
|
error('does not support multidimensional signals')
|
||||||
|
else
|
||||||
|
vals = x.signals.values;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else % should be array
|
||||||
|
vals = x;
|
||||||
|
end
|
||||||
|
|
||||||
|
if nargin<3
|
||||||
|
Nmax=length(vals);
|
||||||
|
end
|
||||||
|
|
||||||
|
if nargin<4
|
||||||
|
plot_style = 'points';
|
||||||
|
end
|
||||||
|
|
||||||
|
if (~isnumeric(vals))
|
||||||
|
error('unsupported data type')
|
||||||
|
elseif (isreal(vals))
|
||||||
|
error('numbers are not complex')
|
||||||
|
end
|
||||||
|
|
||||||
|
if ((samples_per_symbol < 1) || ~(round(samples_per_symbol)==samples_per_symbol))
|
||||||
|
error('samples_per_symbol must be a strictly positive integer')
|
||||||
|
end
|
||||||
|
|
||||||
|
if ~strcmp(plot_style,'points') && ~strcmp(plot_style,'arrows')
|
||||||
|
error('possible values for plot plot_style are : "points" and "arrows"')
|
||||||
|
end
|
||||||
|
%% function implementation
|
||||||
|
|
||||||
|
sel=(1:Nmax)';
|
||||||
|
abs_max = max(abs(x(sel)));
|
||||||
|
if (samples_per_symbol==1)
|
||||||
|
if strcmp(plot_style,'points')
|
||||||
|
plot3(sel,real(vals(sel)),imag(vals(sel)),'.');
|
||||||
|
elseif strcmp(plot_style,'arrows')
|
||||||
|
quiver3(sel,zeros(size(sel)),zeros(size(sel)),zeros(size(sel)),real(vals(sel)),imag(vals(sel)),0);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
plot3(sel,real(vals(sel)),imag(vals(sel)),'.');
|
||||||
|
hold on
|
||||||
|
sel= (1:samples_per_symbol:Nmax)';
|
||||||
|
if strcmp(plot_style,'points')
|
||||||
|
plot3(sel,real(vals(sel)),imag(vals(sel)),'.r');
|
||||||
|
elseif strcmp(plot_style,'arrows')
|
||||||
|
quiver3(sel,zeros(size(sel)),zeros(size(sel)),zeros(size(sel)),real(vals(sel)),imag(vals(sel)),0);
|
||||||
|
end
|
||||||
|
hold off
|
||||||
|
end
|
||||||
|
ylim([-abs_max,abs_max])
|
||||||
|
zlim([-abs_max,abs_max])
|
||||||
|
axis vis3d
|
||||||
|
grid on
|
||||||
|
xlabel('samples');
|
||||||
|
ylabel('real');
|
||||||
|
zlabel('imag');
|
28
Z_utils/show_histogram.m
Executable file
28
Z_utils/show_histogram.m
Executable file
@ -0,0 +1,28 @@
|
|||||||
|
function show_histogram(histogram,Vmin,Vmax)
|
||||||
|
% show_histogram((histogram,Vmin,Vmax) plots in a figure
|
||||||
|
% an histogram computed by the Signal Processing Blockset 'Histogram'
|
||||||
|
% block and exported to the Matlab Workspace through a 'Signal to
|
||||||
|
% Workspace' block. The 'Signal to Workspace' block has to be
|
||||||
|
% configured to output a one-dimensional array.
|
||||||
|
%
|
||||||
|
% histogram is the name of the variable containing the histogram
|
||||||
|
% as a one-dimensional array
|
||||||
|
% Vmin, Vmax are, respectively, the minimal input value and
|
||||||
|
% the maximal input value, as specified in the dialog box of the
|
||||||
|
% 'Histogram' block.
|
||||||
|
|
||||||
|
% compatible with Matlab R2012b
|
||||||
|
|
||||||
|
if ~isnumeric(histogram)
|
||||||
|
error('histogram is expected to be an array of numbers !');
|
||||||
|
end
|
||||||
|
if ndims(histogram)>2 || (size(histogram,1)~=1 && size(histogram,2)~=1)
|
||||||
|
error('histogram is expected to be a one-dimensional array !');
|
||||||
|
end
|
||||||
|
|
||||||
|
Nbins=length(histogram);
|
||||||
|
delta=(Vmax-Vmin)/Nbins;
|
||||||
|
hx = Vmin+delta/2:delta:Vmax;
|
||||||
|
hy = histogram;
|
||||||
|
|
||||||
|
bar(hx,hy);
|
BIN
change_mdl_wks_data_whose_src_is_mdl_file.pdf
Normal file
BIN
change_mdl_wks_data_whose_src_is_mdl_file.pdf
Normal file
Binary file not shown.
87
plot_complex_sig.m
Normal file
87
plot_complex_sig.m
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
function plot_complex_sig(x,samples_per_symbol,Nmax,plot_style)
|
||||||
|
% plot_complex_sig(x) plots a one-dimensional complex signal as points
|
||||||
|
% in 3-D space : x-axis is the sample (time) axis, y-axis is the real part,
|
||||||
|
% and z-axis the imaginary part
|
||||||
|
%
|
||||||
|
% plot_complex_sig(x,samples_per_symbol) plots all samples in blue and
|
||||||
|
% one sample per symbol in red.
|
||||||
|
%
|
||||||
|
% plot_complex_sig(x,samples_per_symbol,Nmax) only plots the first Nmax
|
||||||
|
% samples.
|
||||||
|
%
|
||||||
|
% plot_complex_sig(x,samples_per_symbol,Nmax,'arrows') use arrows from
|
||||||
|
% (i_sample,0,0) instead of points to represent samples.
|
||||||
|
%
|
||||||
|
% version compatible with Simulink Version 7.3 (R2009a)
|
||||||
|
|
||||||
|
%% process function arguments and perform various tests on function
|
||||||
|
|
||||||
|
nargchk(1,3,nargin);
|
||||||
|
|
||||||
|
if nargin<2
|
||||||
|
samples_per_symbol = 1;
|
||||||
|
end
|
||||||
|
|
||||||
|
if (isstruct(x))
|
||||||
|
if(~isfield(x,'signals'))
|
||||||
|
error('unsupported data type')
|
||||||
|
else
|
||||||
|
if (x.signals.dimensions ~= 1)
|
||||||
|
error('does not support multidimensional signals')
|
||||||
|
else
|
||||||
|
vals = x.signals.values;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else % should be array
|
||||||
|
vals = x;
|
||||||
|
end
|
||||||
|
|
||||||
|
if nargin<3
|
||||||
|
Nmax=length(vals);
|
||||||
|
end
|
||||||
|
|
||||||
|
if nargin<4
|
||||||
|
plot_style = 'points';
|
||||||
|
end
|
||||||
|
|
||||||
|
if (~isnumeric(vals))
|
||||||
|
error('unsupported data type')
|
||||||
|
elseif (isreal(vals))
|
||||||
|
error('numbers are not complex')
|
||||||
|
end
|
||||||
|
|
||||||
|
if ((samples_per_symbol < 1) || ~(round(samples_per_symbol)==samples_per_symbol))
|
||||||
|
error('samples_per_symbol must be a strictly positive integer')
|
||||||
|
end
|
||||||
|
|
||||||
|
if ~strcmp(plot_style,'points') && ~strcmp(plot_style,'arrows')
|
||||||
|
error('possible values for plot plot_style are : "points" and "arrows"')
|
||||||
|
end
|
||||||
|
%% function implementation
|
||||||
|
|
||||||
|
sel=(1:Nmax)';
|
||||||
|
abs_max = max(abs(x(sel)));
|
||||||
|
if (samples_per_symbol==1)
|
||||||
|
if strcmp(plot_style,'points')
|
||||||
|
plot3(sel,real(vals(sel)),imag(vals(sel)),'.');
|
||||||
|
elseif strcmp(plot_style,'arrows')
|
||||||
|
quiver3(sel,zeros(size(sel)),zeros(size(sel)),zeros(size(sel)),real(vals(sel)),imag(vals(sel)),0);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
plot3(sel,real(vals(sel)),imag(vals(sel)),'.');
|
||||||
|
hold on
|
||||||
|
sel= (1:samples_per_symbol:Nmax)';
|
||||||
|
if strcmp(plot_style,'points')
|
||||||
|
plot3(sel,real(vals(sel)),imag(vals(sel)),'.r');
|
||||||
|
elseif strcmp(plot_style,'arrows')
|
||||||
|
quiver3(sel,zeros(size(sel)),zeros(size(sel)),zeros(size(sel)),real(vals(sel)),imag(vals(sel)),0);
|
||||||
|
end
|
||||||
|
hold off
|
||||||
|
end
|
||||||
|
ylim([-abs_max,abs_max])
|
||||||
|
zlim([-abs_max,abs_max])
|
||||||
|
axis vis3d
|
||||||
|
grid on
|
||||||
|
xlabel('samples');
|
||||||
|
ylabel('real');
|
||||||
|
zlabel('imag');
|
28
show_histogram.m
Normal file
28
show_histogram.m
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
function show_histogram(histogram,Vmin,Vmax)
|
||||||
|
% show_histogram((histogram,Vmin,Vmax) plots in a figure
|
||||||
|
% an histogram computed by the Signal Processing Blockset 'Histogram'
|
||||||
|
% block and exported to the Matlab Workspace through a 'Signal to
|
||||||
|
% Workspace' block. The 'Signal to Workspace' block has to be
|
||||||
|
% configured to output a one-dimensional array.
|
||||||
|
%
|
||||||
|
% histogram is the name of the variable containing the histogram
|
||||||
|
% as a one-dimensional array
|
||||||
|
% Vmin, Vmax are, respectively, the minimal input value and
|
||||||
|
% the maximal input value, as specified in the dialog box of the
|
||||||
|
% 'Histogram' block.
|
||||||
|
|
||||||
|
% compatible with Matlab R2012b
|
||||||
|
|
||||||
|
if ~isnumeric(histogram)
|
||||||
|
error('histogram is expected to be an array of numbers !');
|
||||||
|
end
|
||||||
|
if ndims(histogram)>2 || (size(histogram,1)~=1 && size(histogram,2)~=1)
|
||||||
|
error('histogram is expected to be a one-dimensional array !');
|
||||||
|
end
|
||||||
|
|
||||||
|
Nbins=length(histogram);
|
||||||
|
delta=(Vmax-Vmin)/Nbins;
|
||||||
|
hx = Vmin+delta/2:delta:Vmax;
|
||||||
|
hy = histogram;
|
||||||
|
|
||||||
|
bar(hx,hy);
|
Reference in New Issue
Block a user