High Speed Auswertung und Database code
This commit is contained in:
@@ -243,11 +243,11 @@ classdef ChannelFreqResp < handle
|
|||||||
%%% plot for publication
|
%%% plot for publication
|
||||||
figure(1234);hold all;box on;title('Magnitude Freq. Response');
|
figure(1234);hold all;box on;title('Magnitude Freq. Response');
|
||||||
%xlim([0.2 .5*max(obj.faxis)*1e-9]);
|
%xlim([0.2 .5*max(obj.faxis)*1e-9]);
|
||||||
ylim([-40, 2]);
|
%ylim([-40, 2]);
|
||||||
Havg_smooth = smooth(Havg,50);
|
Havg_smooth = smooth(Havg,50);
|
||||||
symaxis = (obj.faxis-(obj.f_ref/2))/1e9;
|
symaxis = (obj.faxis-(obj.f_ref/2))/1e9;
|
||||||
Havg = fftshift(Havg);
|
Havg = fftshift(Havg);
|
||||||
Havg = smooth(Havg);
|
%Havg = smooth(Havg);
|
||||||
plot(symaxis, 20*log10(abs(Havg)),'LineWidth',0.5);
|
plot(symaxis, 20*log10(abs(Havg)),'LineWidth',0.5);
|
||||||
grid on;
|
grid on;
|
||||||
|
|
||||||
|
|||||||
514
Classes/DataBaseHandler/DBHandler.m
Normal file
514
Classes/DataBaseHandler/DBHandler.m
Normal file
@@ -0,0 +1,514 @@
|
|||||||
|
classdef DBHandler < handle
|
||||||
|
% DBHANDLER Class to handle database queries
|
||||||
|
% This class provides methods to interact with an SQLite database, including
|
||||||
|
% inserting data, retrieving table names, and appending new rows.
|
||||||
|
|
||||||
|
properties
|
||||||
|
conn % Database connection object
|
||||||
|
pathToDB % Path to the SQLite database
|
||||||
|
tableNames % Cell array containing names of all tables in the database
|
||||||
|
tables = struct(); % Structure containing MATLAB tables for each database table
|
||||||
|
distinctValues
|
||||||
|
end
|
||||||
|
|
||||||
|
methods
|
||||||
|
function obj = DBHandler(options)
|
||||||
|
% DBHANDLER Constructor for the DBHandler class
|
||||||
|
% Initializes the database connection and retrieves table and field names.
|
||||||
|
%
|
||||||
|
% Usage:
|
||||||
|
% obj = DBHandler('pathToDB', 'path/to/database.db');
|
||||||
|
|
||||||
|
arguments
|
||||||
|
options.pathToDB = ""; % Default value for pathToDB if not provided
|
||||||
|
end
|
||||||
|
|
||||||
|
% Assign values to class properties based on input arguments
|
||||||
|
fn = fieldnames(options);
|
||||||
|
for n = 1:numel(fn)
|
||||||
|
try
|
||||||
|
obj.(fn{n}) = options.(fn{n});
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
% Establish a connection to the SQLite database
|
||||||
|
try
|
||||||
|
obj.conn = sqlite(obj.pathToDB);
|
||||||
|
catch e
|
||||||
|
error('Failed to connect to the database: %s', e.message);
|
||||||
|
end
|
||||||
|
|
||||||
|
% Get table names and the first rows of each table to understand the structure
|
||||||
|
obj.getTableNames();
|
||||||
|
obj.getTables();
|
||||||
|
obj.getDistinctValues();
|
||||||
|
end
|
||||||
|
|
||||||
|
function obj = getTableNames(obj)
|
||||||
|
% Get all table names from the database
|
||||||
|
try
|
||||||
|
result = fetch(obj.conn, 'SELECT name FROM sqlite_master WHERE type="table"');
|
||||||
|
obj.tableNames = result.name;
|
||||||
|
catch e
|
||||||
|
error('Failed to retrieve table names: %s', e.message);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function obj = getTables(obj)
|
||||||
|
% Get a preview (first row) of each table to understand its structure
|
||||||
|
for i = 1:numel(obj.tableNames)
|
||||||
|
try
|
||||||
|
tableName = obj.tableNames{i};
|
||||||
|
|
||||||
|
results = fetch(obj.conn, sprintf('SELECT * FROM %s WHERE 1 = 2', tableName));
|
||||||
|
% Matlab cant handle if there is a NULL in a returned
|
||||||
|
% datarow... therefore do not return a row using the
|
||||||
|
% above condition which is never true
|
||||||
|
% results = sqlread(obj.conn, tableName, MaxRows=1);
|
||||||
|
|
||||||
|
for l = 1:numel(results.Properties.VariableNames)
|
||||||
|
varName = results.Properties.VariableNames{l};
|
||||||
|
obj.tables.(tableName).(varName) = []; % Store the preview as a reference
|
||||||
|
end
|
||||||
|
|
||||||
|
catch e
|
||||||
|
warning('Failed to read the table %s: %s', tableName, e.message);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function obj = getDistinctValues(obj)
|
||||||
|
% getDistinctValues Retrieves distinct values for each relevant field in all tables
|
||||||
|
% excluding fields ending with "_id". Stores distinct values in the 'distinctValues'
|
||||||
|
% property.
|
||||||
|
|
||||||
|
% Initialize a structure to store distinct values for each table
|
||||||
|
obj.distinctValues = struct();
|
||||||
|
|
||||||
|
% Iterate over each table in obj.tables
|
||||||
|
tableNames = fieldnames(obj.tables);
|
||||||
|
|
||||||
|
for i = 1:numel(tableNames)
|
||||||
|
tableName = tableNames{i};
|
||||||
|
|
||||||
|
% Initialize a sub-struct to store distinct values for each field in the table
|
||||||
|
obj.distinctValues.(tableName) = struct();
|
||||||
|
|
||||||
|
% Get all fields of the current table
|
||||||
|
fieldNames = fieldnames(obj.tables.(tableName));
|
||||||
|
|
||||||
|
% Iterate over each field
|
||||||
|
for j = 1:numel(fieldNames)
|
||||||
|
fieldName = fieldNames{j};
|
||||||
|
|
||||||
|
% Skip fields ending with '_id' as they don't contain useful distinct values
|
||||||
|
if endsWith(fieldName, '_id')
|
||||||
|
continue;
|
||||||
|
end
|
||||||
|
|
||||||
|
% Construct SQL to get distinct values for the current field
|
||||||
|
query = sprintf('SELECT DISTINCT %s FROM %s', fieldName, tableName);
|
||||||
|
|
||||||
|
% Execute query and fetch distinct values
|
||||||
|
try
|
||||||
|
result = fetch(obj.conn, query);
|
||||||
|
|
||||||
|
% Store the distinct values in the structure
|
||||||
|
if ~isempty(result)
|
||||||
|
distinctValues = table2array(result);
|
||||||
|
else
|
||||||
|
distinctValues = [];
|
||||||
|
end
|
||||||
|
|
||||||
|
obj.distinctValues.(tableName).(fieldName) = distinctValues;
|
||||||
|
|
||||||
|
catch e
|
||||||
|
warning('Failed to retrieve distinct values for %s.%s: %s', tableName, fieldName, e.message);
|
||||||
|
obj.distinctValues.(tableName).(fieldName) = [];
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
% Display the distinct values (optional, for debugging purposes)
|
||||||
|
disp('Distinct values for each field:');
|
||||||
|
disp(obj.distinctValues);
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function lastID = appendToTable(obj, tableName, newRow)
|
||||||
|
% appendToTable Appends a new row to the specified table
|
||||||
|
%
|
||||||
|
% Usage:
|
||||||
|
% appendToTable(tableName, newRow)
|
||||||
|
%
|
||||||
|
% Inputs:
|
||||||
|
% tableName: The name of the table to append data to.
|
||||||
|
% newRow: A MATLAB table or struct containing the new row to be appended.
|
||||||
|
|
||||||
|
% Check if the table exists in the fetched tables
|
||||||
|
if ~isfield(obj.tables, tableName)
|
||||||
|
error('Table %s does not exist in the database or has not been fetched.', tableName);
|
||||||
|
end
|
||||||
|
|
||||||
|
% Convert newRow to a table if it is a struct
|
||||||
|
if isstruct(newRow)
|
||||||
|
fields = fieldnames(newRow);
|
||||||
|
emptyFields = structfun(@isempty,newRow);
|
||||||
|
if sum(emptyFields)>0
|
||||||
|
newRow.(fields{emptyFields==1}) = NaN;
|
||||||
|
disp(['In Table: ',tableName,': ',fields{emptyFields==1},' was empty, is now NaN ',newRow.(fields{emptyFields==1})])
|
||||||
|
|
||||||
|
end
|
||||||
|
newRow = struct2table(newRow);
|
||||||
|
end
|
||||||
|
|
||||||
|
% Ensure the new row matches the structure of the existing table
|
||||||
|
existingTableStructure = obj.tables.(tableName);
|
||||||
|
|
||||||
|
% Perform data type checks and conversions
|
||||||
|
for colName = newRow.Properties.VariableNames
|
||||||
|
% Extract the value and its intended column type
|
||||||
|
value = newRow.(colName{1});
|
||||||
|
existingValue = existingTableStructure.(colName{1});
|
||||||
|
|
||||||
|
% If the value is a class object, convert it to JSON format
|
||||||
|
if isobject(value) && ~isdatetime(value) && ~isa(value,"string")
|
||||||
|
newRow.(colName{1}) = string(jsonencode(value));
|
||||||
|
|
||||||
|
% If the value is a character array, convert it to a string
|
||||||
|
elseif ischar(value)
|
||||||
|
newRow.(colName{1}) = string(value);
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
% Append the new row to the database table
|
||||||
|
try
|
||||||
|
sqlwrite(obj.conn, tableName, newRow);
|
||||||
|
% disp(['Successfully appended new row to the table ', tableName]);
|
||||||
|
catch e
|
||||||
|
error('Failed to append to the table %s: %s', tableName, e.message);
|
||||||
|
end
|
||||||
|
|
||||||
|
% Retrieve the measurement_id of the newly inserted row for linking other tables
|
||||||
|
result = fetch(obj.conn, 'SELECT last_insert_rowid()');
|
||||||
|
lastID = result{1, 1}; % Access the value directly from the table
|
||||||
|
end
|
||||||
|
|
||||||
|
function exists = checkIfRunExists(obj, table2check, column2check, value2check)
|
||||||
|
% checkIfRunExists Checks if a specific value exists in a specified column of a table
|
||||||
|
%
|
||||||
|
% Usage:
|
||||||
|
% exists = checkIfRunExists(table2check, column2check, value2check)
|
||||||
|
%
|
||||||
|
% Inputs:
|
||||||
|
% table2check: The name of the table to check for duplicates.
|
||||||
|
% column2check: The name of the column to check within the specified table.
|
||||||
|
% value2check: The value to check for in the specified column.
|
||||||
|
%
|
||||||
|
% Outputs:
|
||||||
|
% exists: Boolean indicating whether the value already exists in the table.
|
||||||
|
|
||||||
|
% Ensure the specified table and column exist in the database
|
||||||
|
if ~isfield(obj.tables, table2check)
|
||||||
|
error('Table %s does not exist in the database.', table2check);
|
||||||
|
end
|
||||||
|
|
||||||
|
% Ensure the specified column exists in the table structure
|
||||||
|
if ~isfield(obj.tables.(table2check), column2check)
|
||||||
|
error('Column %s does not exist in the table %s.', column2check, table2check);
|
||||||
|
end
|
||||||
|
|
||||||
|
% Construct the query to check for the value in the specified column
|
||||||
|
query = sprintf('SELECT COUNT(*) FROM %s WHERE %s = "%s"', table2check, column2check, value2check);
|
||||||
|
|
||||||
|
% Execute the query and pass the value2check to avoid SQL injection issues
|
||||||
|
try
|
||||||
|
result = fetch(obj.conn, query);
|
||||||
|
count = result{1, 1}; % Extract the count from the result
|
||||||
|
catch e
|
||||||
|
error('Failed to execute the duplicate check query: %s', e.message);
|
||||||
|
end
|
||||||
|
|
||||||
|
% If count is greater than 0, then the value exists in the table
|
||||||
|
exists = count > 0;
|
||||||
|
|
||||||
|
if exists
|
||||||
|
disp(['The value "', value2check, '" already exists in the column "', column2check, '" of the table "', table2check, '".']);
|
||||||
|
else
|
||||||
|
% disp(['The value "', value2check, '" does not exist in the column "', column2check, '" of the table "', table2check, '".']);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function answer = fetch(obj,query)
|
||||||
|
answer = fetch(obj.conn,query);
|
||||||
|
end
|
||||||
|
|
||||||
|
function result = getPathsWithFlexibleFilter(obj, filterParams, selectedFields)
|
||||||
|
% getPathsWithFlexibleFilter Retrieves values from Runs table with flexible filtering
|
||||||
|
% and lets the user select which fields to include in the SELECT statement.
|
||||||
|
%
|
||||||
|
% Usage:
|
||||||
|
% [rxRawPaths, filteredValues] = getPathsWithFlexibleFilter(filterParams)
|
||||||
|
%
|
||||||
|
% Inputs:
|
||||||
|
% filterParams: A structure containing the parameters with their values.
|
||||||
|
% If left empty, two popup windows will prompt the user for input.
|
||||||
|
%
|
||||||
|
% Outputs:
|
||||||
|
% rxRawPaths: Cell array of values from the Runs table matching the criteria.
|
||||||
|
% filteredValues: Table of distinct values for parameters included in filterParams.
|
||||||
|
arguments
|
||||||
|
obj
|
||||||
|
filterParams = [];
|
||||||
|
selectedFields = [];
|
||||||
|
end
|
||||||
|
|
||||||
|
% Step 1: Prompt the user to input filter parameters if not provided
|
||||||
|
if isempty(filterParams)
|
||||||
|
filterParams = obj.promptFilterParameters();
|
||||||
|
end
|
||||||
|
|
||||||
|
% Step 2: Prompt the user to select fields to include in the SELECT statement
|
||||||
|
if isempty(selectedFields)
|
||||||
|
selectedFields = obj.promptSelectFields();
|
||||||
|
else
|
||||||
|
if iscell(selectedFields)
|
||||||
|
|
||||||
|
elseif isstruct(selectedFields)
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
% Step 3: Construct the SQL query based on the inputs
|
||||||
|
query = obj.constructSQLQuery(filterParams, selectedFields);
|
||||||
|
|
||||||
|
% Step 4: Execute the query and handle results
|
||||||
|
result = obj.fetch(query);
|
||||||
|
end
|
||||||
|
|
||||||
|
function query = constructSQLQuery(obj, filterParams, selectedFields)
|
||||||
|
% constructSQLQuery Constructs the SQL query based on filter parameters and selected fields.
|
||||||
|
|
||||||
|
% Construct the SELECT clause dynamically based on user selection
|
||||||
|
selectClause = 'SELECT DISTINCT ';
|
||||||
|
for i = 1:numel(selectedFields)
|
||||||
|
fieldParts = strsplit(selectedFields{i}, '.');
|
||||||
|
tableName = fieldParts{1};
|
||||||
|
fieldName = fieldParts{2};
|
||||||
|
|
||||||
|
if isnumeric(obj.tables.(tableName).(fieldName))
|
||||||
|
selectClause = [selectClause, 'COALESCE(', selectedFields{i}, ', -1) AS ', fieldName];
|
||||||
|
else
|
||||||
|
selectClause = [selectClause, 'COALESCE(', selectedFields{i}, ', '''') AS ', fieldName];
|
||||||
|
end
|
||||||
|
|
||||||
|
if i < numel(selectedFields)
|
||||||
|
selectClause = [selectClause, ', '];
|
||||||
|
else
|
||||||
|
selectClause = [selectClause, ' '];
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
% Construct the FROM and WHERE clause
|
||||||
|
baseQuery = [selectClause, 'FROM Runs ' ...
|
||||||
|
'LEFT JOIN Configurations ON Runs.run_id = Configurations.run_id ' ...
|
||||||
|
'LEFT JOIN Measurements ON Runs.run_id = Measurements.run_id ' ...
|
||||||
|
'LEFT JOIN BERs ON Runs.run_id = BERs.run_id ' ...
|
||||||
|
'LEFT JOIN Equalizer ON BERs.eq_id = Equalizer.eq_id ' ...
|
||||||
|
'WHERE '];
|
||||||
|
|
||||||
|
% Loop through each table in filterParams
|
||||||
|
filterClauses = [];
|
||||||
|
tableNames = fieldnames(filterParams);
|
||||||
|
|
||||||
|
for t = 1:numel(tableNames)
|
||||||
|
tableName = tableNames{t};
|
||||||
|
tableParams = filterParams.(tableName);
|
||||||
|
|
||||||
|
% Loop through each parameter in the table
|
||||||
|
fieldNames = fieldnames(tableParams);
|
||||||
|
for i = 1:numel(fieldNames)
|
||||||
|
fieldName = fieldNames{i};
|
||||||
|
value = tableParams.(fieldName);
|
||||||
|
|
||||||
|
% Construct the full column name in the format "tableName.fieldName"
|
||||||
|
fullName = sprintf('%s.%s', tableName, fieldName);
|
||||||
|
|
||||||
|
% Handle different types of values for SQL query construction
|
||||||
|
if isempty(value)
|
||||||
|
% Skip this parameter if it is empty (include all values)
|
||||||
|
continue;
|
||||||
|
elseif isnumeric(value) && isnan(value)
|
||||||
|
% If value is NaN, use IS NULL in SQL
|
||||||
|
filterClause = sprintf('%s IS NULL', fullName);
|
||||||
|
elseif isnumeric(value)
|
||||||
|
filterClause = sprintf('%s = %f', fullName, value);
|
||||||
|
elseif islogical(value) || (isnumeric(value) && ismember(value, [0, 1]))
|
||||||
|
filterClause = sprintf('%s = %d', fullName, value);
|
||||||
|
elseif ischar(value) || isstring(value)
|
||||||
|
filterClause = sprintf('%s = "%s"', fullName, value);
|
||||||
|
else
|
||||||
|
error('Unsupported data type for field "%s".', fullName);
|
||||||
|
end
|
||||||
|
|
||||||
|
% Add the constructed filter clause to the list
|
||||||
|
filterClauses = [filterClauses, filterClause, ' AND '];
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
% Remove trailing ' AND ' from the filter clauses if any filters were added
|
||||||
|
if ~isempty(filterClauses)
|
||||||
|
filterClauses = filterClauses(1:end-5);
|
||||||
|
end
|
||||||
|
|
||||||
|
% Construct the final SQL query
|
||||||
|
if isempty(filterClauses)
|
||||||
|
query = [selectClause, 'FROM Runs ' ...
|
||||||
|
'LEFT JOIN Configurations ON Runs.run_id = Configurations.run_id ' ...
|
||||||
|
'LEFT JOIN Measurements ON Runs.run_id = Measurements.run_id ' ...
|
||||||
|
'LEFT JOIN BERs ON Runs.run_id = BERs.run_id'];
|
||||||
|
else
|
||||||
|
query = [baseQuery, filterClauses];
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function selectedFields = promptSelectFields(obj)
|
||||||
|
% promptSelectFields Prompts the user to select fields from multiple tables to include in the SELECT statement using settingsdlg.
|
||||||
|
|
||||||
|
% Get all possible fields from all tables (excluding sqlite_sequence)
|
||||||
|
tableNames = fieldnames(obj.tables);
|
||||||
|
tableNames = setdiff(tableNames, {'sqlite_sequence'}); % Remove sqlite_sequence
|
||||||
|
|
||||||
|
% Prepare the inputs for settingsdlg
|
||||||
|
promptSettings = {};
|
||||||
|
allFieldsFullName = {};
|
||||||
|
convertedFieldNames = {};
|
||||||
|
|
||||||
|
for i = 1:numel(tableNames)
|
||||||
|
tableFields = fieldnames(obj.tables.(tableNames{i}));
|
||||||
|
for j = 1:numel(tableFields)
|
||||||
|
fieldName = tableFields{j};
|
||||||
|
fullName = sprintf('%s.%s', tableNames{i}, fieldName);
|
||||||
|
convertedName = strrep(fullName, '.', '_'); % Replace '.' with '_'
|
||||||
|
|
||||||
|
allFieldsFullName{end + 1} = fullName; % Add full name to the list
|
||||||
|
convertedFieldNames{end + 1} = convertedName; % Store the converted name
|
||||||
|
|
||||||
|
% Add the field name and checkbox setting to the prompt
|
||||||
|
promptSettings{end + 1} = {sprintf('Include %s', fullName), convertedName};
|
||||||
|
promptSettings{end + 1} = false; % Default: not selected
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
% Create the settings dialog
|
||||||
|
[settings, button] = settingsdlg(...
|
||||||
|
'title', 'Select Fields for the SQL Query', ...
|
||||||
|
'description', 'Check the boxes for the fields you want to include in the SELECT statement.', ...
|
||||||
|
promptSettings{:} ...
|
||||||
|
);
|
||||||
|
|
||||||
|
% If the user cancels, default to selecting all fields
|
||||||
|
if strcmp(button, 'cancel')
|
||||||
|
selectedFields = allFieldsFullName;
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
% Parse user input into selectedFields
|
||||||
|
selectedFields = {};
|
||||||
|
for i = 1:numel(allFieldsFullName)
|
||||||
|
convertedName = convertedFieldNames{i};
|
||||||
|
if isfield(settings, convertedName) && settings.(convertedName) % Add to selectedFields if the checkbox was selected
|
||||||
|
selectedFields{end + 1} = allFieldsFullName{i}; %#ok<AGROW>
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
% If no fields are selected, default to selecting all fields
|
||||||
|
if isempty(selectedFields)
|
||||||
|
selectedFields = allFieldsFullName;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function filterParams = promptFilterParameters(obj)
|
||||||
|
% promptFilterParameters Prompts the user to enter filter parameters using the settingsdlg framework.
|
||||||
|
|
||||||
|
% Get all possible parameters from all tables (excluding sqlite_sequence)
|
||||||
|
tableNames = fieldnames(obj.tables);
|
||||||
|
tableNames = setdiff(tableNames, {'sqlite_sequence'}); % Remove sqlite_sequence
|
||||||
|
|
||||||
|
% Prepare the inputs for settingsdlg with sections and separators
|
||||||
|
promptSettings = {};
|
||||||
|
allFieldsFullName = {};
|
||||||
|
convertedFieldNames = {};
|
||||||
|
|
||||||
|
for i = 1:numel(tableNames)
|
||||||
|
% Add a separator for each table section
|
||||||
|
promptSettings{end + 1} = 'separator';
|
||||||
|
promptSettings{end + 1} = tableNames{i};
|
||||||
|
|
||||||
|
% Get all fields from the current table
|
||||||
|
tableFields = fieldnames(obj.tables.(tableNames{i}));
|
||||||
|
|
||||||
|
% Prepare each field to be added to the dialog
|
||||||
|
for j = 1:numel(tableFields)
|
||||||
|
fieldName = tableFields{j};
|
||||||
|
fullName = sprintf('%s.%s', tableNames{i}, fieldName);
|
||||||
|
convertedName = strrep(fullName, '.', '_'); % Replace '.' with '_'
|
||||||
|
|
||||||
|
allFieldsFullName{end + 1} = fullName; % Add full name to the list
|
||||||
|
convertedFieldNames{end + 1} = convertedName; % Store the converted name
|
||||||
|
|
||||||
|
% Add the field name and value setting to the prompt
|
||||||
|
promptSettings{end + 1} = {sprintf('%s', fullName), convertedName};
|
||||||
|
promptSettings{end + 1} = [];
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
% Create the settings dialog
|
||||||
|
[settings, button] = settingsdlg(...
|
||||||
|
'title', 'Input Parameters for Filtering', ...
|
||||||
|
'description', 'Enter the values for each field to filter. Leave empty to include all values. Type NaN for NULL.', ...
|
||||||
|
promptSettings{:} ...
|
||||||
|
);
|
||||||
|
|
||||||
|
% If the user cancels, return an empty struct
|
||||||
|
if strcmp(button, 'cancel')
|
||||||
|
filterParams = struct();
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
% Parse user input into filterParams structure
|
||||||
|
filterParams = struct();
|
||||||
|
|
||||||
|
for i = 1:numel(allFieldsFullName)
|
||||||
|
value = settings.(convertedFieldNames{i});
|
||||||
|
|
||||||
|
% Split full name to get table and field names
|
||||||
|
fieldParts = strsplit(allFieldsFullName{i}, '.');
|
||||||
|
tableName = fieldParts{1};
|
||||||
|
fieldName = fieldParts{2};
|
||||||
|
|
||||||
|
% If the table does not exist in the filterParams struct, create it
|
||||||
|
if ~isfield(filterParams, tableName)
|
||||||
|
filterParams.(tableName) = struct();
|
||||||
|
end
|
||||||
|
|
||||||
|
% Assign values to the respective fields under each table
|
||||||
|
if isempty(value)
|
||||||
|
filterParams.(tableName).(fieldName) = []; % Set to empty to include all values
|
||||||
|
elseif isnumeric(value) && isnan(value)
|
||||||
|
filterParams.(tableName).(fieldName) = NaN; % Use NaN to handle as NULL
|
||||||
|
else
|
||||||
|
filterParams.(tableName).(fieldName) = value; % Use the entered value
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -129,7 +129,9 @@ classdef DataStorage < handle
|
|||||||
tmp = obj.sto.(storageVarName){lin_idx(i)};
|
tmp = obj.sto.(storageVarName){lin_idx(i)};
|
||||||
if ~isempty(tmp)
|
if ~isempty(tmp)
|
||||||
|
|
||||||
if isa(tmp,'Signal') || isa(tmp,'struct') || isa(tmp,'Exfo_laser') || isa(tmp,'DC_supply')
|
if isa(tmp,'double')
|
||||||
|
value(i) = tmp ;
|
||||||
|
elseif isa(tmp,'Signal') || isa(tmp,'struct') || isa(tmp,'Exfo_laser') || isa(tmp,'DC_supply')
|
||||||
if i == 1
|
if i == 1
|
||||||
value = {};
|
value = {};
|
||||||
end
|
end
|
||||||
@@ -268,6 +270,69 @@ classdef DataStorage < handle
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function phys_indices = getPhysIndicesByLinIndex(obj, lin_idx)
|
||||||
|
% Converts a linear index into the corresponding physical parameter values
|
||||||
|
% Inputs:
|
||||||
|
% - lin_idx: The linear index within the storage array
|
||||||
|
% Output:
|
||||||
|
% - phys_indices: A cell array containing the physical parameter values for each dimension
|
||||||
|
|
||||||
|
% Initialize output cell array
|
||||||
|
phys_indices = cell(1, numel(obj.fn));
|
||||||
|
|
||||||
|
% Convert linear index to subscript indices
|
||||||
|
[subscripts{1:numel(obj.dim)}] = ind2sub(obj.dim, lin_idx);
|
||||||
|
|
||||||
|
% Map subscripts to physical values for each parameter
|
||||||
|
for i = 1:numel(obj.fn)
|
||||||
|
param_name = obj.fn(i);
|
||||||
|
phys_indices{i} = obj.parameter.(param_name).getPhysForIndex(subscripts{i});
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function [physStruct, stored_value] = getPhysAndValueByLinIndex(obj, storageVarName, lin_idx)
|
||||||
|
% Retrieves a structure with physical parameter values as fieldnames,
|
||||||
|
% their corresponding parameter names as values, and the stored value
|
||||||
|
% for a given linear index.
|
||||||
|
% Inputs:
|
||||||
|
% - storageVarName: Name of the storage variable in obj.sto
|
||||||
|
% - lin_idx: The linear index within the storage array
|
||||||
|
% Outputs:
|
||||||
|
% - physStruct: A structure with physical parameter values as fieldnames
|
||||||
|
% and parameter names as values
|
||||||
|
% - stored_value: The value stored at the given linear index in the
|
||||||
|
% specified storage variable
|
||||||
|
|
||||||
|
% Initialize an empty structure
|
||||||
|
physStruct = struct();
|
||||||
|
|
||||||
|
% Convert linear index to subscript indices
|
||||||
|
[subscripts{1:numel(obj.dim)}] = ind2sub(obj.dim, lin_idx);
|
||||||
|
|
||||||
|
% Map subscripts to physical values and parameter names for each dimension
|
||||||
|
for i = 1:numel(obj.fn)
|
||||||
|
param_name = obj.fn(i);
|
||||||
|
phys_value = obj.parameter.(param_name).getPhysForIndex(subscripts{i});
|
||||||
|
|
||||||
|
% Add to the structure with phys_value as the fieldname and param_name as the value
|
||||||
|
physStruct.(param_name) = phys_value;
|
||||||
|
end
|
||||||
|
|
||||||
|
% Retrieve the stored value at the given linear index
|
||||||
|
stored_value = obj.sto.(storageVarName){lin_idx};
|
||||||
|
end
|
||||||
|
|
||||||
|
function num_elements = getLastLinIndice(obj)
|
||||||
|
% Returns all possible linear indices for the data structure
|
||||||
|
% Output:
|
||||||
|
% - lin_indices: A column vector containing all linear indices for the storage array
|
||||||
|
|
||||||
|
% Calculate the total number of elements in the storage array
|
||||||
|
num_elements = prod(obj.dim);
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
4
Functions/EQ_structures/duobinary_signaling.m
Normal file
4
Functions/EQ_structures/duobinary_signaling.m
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
function duobinary_signaling()
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
4
Functions/EQ_structures/duobinary_target.m
Normal file
4
Functions/EQ_structures/duobinary_target.m
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
function duobinary_target()
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
4
Functions/EQ_structures/vnle.m
Normal file
4
Functions/EQ_structures/vnle.m
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
function eq_signal = vnle(EQ,rx_signal,tx_symbols)
|
||||||
|
%VNLE
|
||||||
|
eq_signal = EQ.process(rx_signal,tx_symbols);
|
||||||
|
end
|
||||||
4
Functions/EQ_structures/vnle_postfilter_mlse.m
Normal file
4
Functions/EQ_structures/vnle_postfilter_mlse.m
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
function vnle_postfilter_mlse()
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
290
db_eq_mpi.tex
Normal file
290
db_eq_mpi.tex
Normal file
@@ -0,0 +1,290 @@
|
|||||||
|
% This file was created by matlab2tikz.
|
||||||
|
%
|
||||||
|
%The latest updates can be retrieved from
|
||||||
|
% http://www.mathworks.com/matlabcentral/fileexchange/22022-matlab2tikz-matlab2tikz
|
||||||
|
%where you can also make suggestions and rate matlab2tikz.
|
||||||
|
%
|
||||||
|
\definecolor{mycolor1}{rgb}{0.89020,0.10196,0.10980}%
|
||||||
|
%
|
||||||
|
\begin{tikzpicture}
|
||||||
|
|
||||||
|
\begin{axis}[%
|
||||||
|
width=0.951\fwidth,
|
||||||
|
height=\fheight,
|
||||||
|
at={(0\fwidth,0\fheight)},
|
||||||
|
scale only axis,
|
||||||
|
xmin=-3.14159265358979,
|
||||||
|
xmax=3.14159265358979,
|
||||||
|
xlabel style={font=\color{white!15!black}},
|
||||||
|
xlabel={Normalized Frequency},
|
||||||
|
ymin=-46,
|
||||||
|
ymax=3,
|
||||||
|
ytick={-200, -190, -180, -170, -160, -150, -140, -130, -120, -110, -100, -90, -80, -70, -60, -50, -40, -30, -20, -10, 0, 10},
|
||||||
|
ylabel style={font=\color{white!15!black}},
|
||||||
|
ylabel={normalized to 0 dB},
|
||||||
|
axis background/.style={fill=white},
|
||||||
|
axis x line*=bottom,
|
||||||
|
axis y line*=left,
|
||||||
|
xmajorgrids,
|
||||||
|
xminorgrids,
|
||||||
|
ymajorgrids,
|
||||||
|
yminorgrids,
|
||||||
|
legend style={legend cell align=left, align=left, draw=white!15!black}
|
||||||
|
]
|
||||||
|
\addplot [color=mycolor1, line width=1.0pt]
|
||||||
|
table[row sep=crcr]{%
|
||||||
|
-3.11704896098362 -34.152640124107\\
|
||||||
|
-3.09250526837745 -37.30368249791\\
|
||||||
|
-3.06796157577129 -36.4084155134507\\
|
||||||
|
-3.04341788316511 -32.8472897555048\\
|
||||||
|
-3.01887419055894 -29.7603420288457\\
|
||||||
|
-2.99433049795277 -27.3878352702008\\
|
||||||
|
-2.9697868053466 -25.5045919439843\\
|
||||||
|
-2.94524311274043 -23.8596773095355\\
|
||||||
|
-2.92069942013426 -22.4231778333755\\
|
||||||
|
-2.89615572752809 -21.0738854605452\\
|
||||||
|
-2.87161203492192 -19.8241748642718\\
|
||||||
|
-2.84706834231575 -18.7656037744813\\
|
||||||
|
-2.82252464970958 -17.9427012863468\\
|
||||||
|
-2.79798095710341 -17.3300455020831\\
|
||||||
|
-2.77343726449724 -16.8570972623564\\
|
||||||
|
-2.74889357189107 -16.4303665810903\\
|
||||||
|
-2.7243498792849 -15.9603331293506\\
|
||||||
|
-2.67526249407256 -14.9152364147404\\
|
||||||
|
-2.62617510886022 -13.7282789909322\\
|
||||||
|
-2.60163141625405 -13.2711055669692\\
|
||||||
|
-2.57708772364788 -13.0159869302563\\
|
||||||
|
-2.55254403104171 -12.8627077954076\\
|
||||||
|
-2.52800033843554 -12.6991459702061\\
|
||||||
|
-2.50345664582937 -12.4271267312005\\
|
||||||
|
-2.47891295322319 -11.8866214027661\\
|
||||||
|
-2.45436926061703 -11.0536074564346\\
|
||||||
|
-2.42982556801086 -10.1083695425263\\
|
||||||
|
-2.40528187540468 -9.31388042827889\\
|
||||||
|
-2.38073818279852 -8.778725491267\\
|
||||||
|
-2.35619449019234 -8.39313608791176\\
|
||||||
|
-2.33165079758618 -8.14092384893069\\
|
||||||
|
-2.30710710498001 -8.06093370603605\\
|
||||||
|
-2.28256341237383 -8.14161353993601\\
|
||||||
|
-2.25801971976767 -8.27290604595128\\
|
||||||
|
-2.23347602716149 -8.36591478049129\\
|
||||||
|
-2.20893233455532 -8.43416110047679\\
|
||||||
|
-2.18438864194916 -8.4380075354912\\
|
||||||
|
-2.15984494934298 -8.30596285747854\\
|
||||||
|
-2.13530125673681 -8.1165797444491\\
|
||||||
|
-2.11075756413064 -7.98175190194559\\
|
||||||
|
-2.08621387152447 -7.8619798953406\\
|
||||||
|
-2.06167017891831 -7.69653976428778\\
|
||||||
|
-2.03712648631213 -7.4271708098562\\
|
||||||
|
-2.01258279370596 -7.04574805161646\\
|
||||||
|
-1.98803910109979 -6.57390723520547\\
|
||||||
|
-1.96349540849362 -6.06771072445017\\
|
||||||
|
-1.93895171588745 -5.63493976637049\\
|
||||||
|
-1.91440802328128 -5.34213348629677\\
|
||||||
|
-1.88986433067511 -5.15834304528927\\
|
||||||
|
-1.86532063806894 -5.06241865677818\\
|
||||||
|
-1.84077694546277 -5.00995310954403\\
|
||||||
|
-1.8162332528566 -4.94933187405054\\
|
||||||
|
-1.79168956025043 -4.89778434539084\\
|
||||||
|
-1.76714586764426 -4.91128987148945\\
|
||||||
|
-1.74260217503809 -4.93802078574208\\
|
||||||
|
-1.71805848243192 -4.97303502588234\\
|
||||||
|
-1.69351478982575 -4.97451045806658\\
|
||||||
|
-1.66897109721958 -4.95636002488353\\
|
||||||
|
-1.64442740461341 -4.90272361408173\\
|
||||||
|
-1.61988371200724 -4.81348152997761\\
|
||||||
|
-1.59534001940106 -4.74564957733824\\
|
||||||
|
-1.5707963267949 -4.70301446670535\\
|
||||||
|
-1.54625263418873 -4.63831980162999\\
|
||||||
|
-1.52170894158255 -4.5187929199835\\
|
||||||
|
-1.49716524897639 -4.34815184803496\\
|
||||||
|
-1.47262155637021 -4.1192135361535\\
|
||||||
|
-1.42353417115788 -3.54761072032757\\
|
||||||
|
-1.3989904785517 -3.29683622342827\\
|
||||||
|
-1.37444678594554 -3.13389750127856\\
|
||||||
|
-1.34990309333936 -3.00703329422139\\
|
||||||
|
-1.32535940073319 -2.93820099699774\\
|
||||||
|
-1.30081570812703 -2.93351704789859\\
|
||||||
|
-1.27627201552085 -2.93615105708502\\
|
||||||
|
-1.25172832291468 -2.94778942364624\\
|
||||||
|
-1.22718463030851 -2.97707904052072\\
|
||||||
|
-1.17809724509618 -3.05857142505209\\
|
||||||
|
-1.15355355249 -3.0594055914491\\
|
||||||
|
-1.12900985988383 -3.0316612426535\\
|
||||||
|
-1.10446616727766 -2.97068360146257\\
|
||||||
|
-1.07992247467149 -2.88584164144167\\
|
||||||
|
-1.05537878206532 -2.7788187463398\\
|
||||||
|
-1.03083508945915 -2.64179784593011\\
|
||||||
|
-0.957204011640641 -2.11741383173444\\
|
||||||
|
-0.932660319034468 -1.94697175864269\\
|
||||||
|
-0.908116626428303 -1.74913747055684\\
|
||||||
|
-0.88357293382213 -1.51630002589027\\
|
||||||
|
-0.859029241215957 -1.32388103733548\\
|
||||||
|
-0.834485548609791 -1.25547919459462\\
|
||||||
|
-0.785398163397446 -1.35535922330764\\
|
||||||
|
-0.76085447079128 -1.40105712246658\\
|
||||||
|
-0.736310778185107 -1.48314193528621\\
|
||||||
|
-0.711767085578934 -1.60767016561632\\
|
||||||
|
-0.687223392972768 -1.67551731596785\\
|
||||||
|
-0.662679700366596 -1.71494365777474\\
|
||||||
|
-0.63813600776043 -1.71820525815976\\
|
||||||
|
-0.613592315154257 -1.68776926339483\\
|
||||||
|
-0.589048622548084 -1.62532409404639\\
|
||||||
|
-0.564504929941918 -1.54010490273969\\
|
||||||
|
-0.539961237335746 -1.4164302592139\\
|
||||||
|
-0.490873852123407 -1.07552633714884\\
|
||||||
|
-0.441786466911061 -0.688310981739598\\
|
||||||
|
-0.417242774304896 -0.488474201410419\\
|
||||||
|
-0.392699081698723 -0.315746347742085\\
|
||||||
|
-0.343611696486384 -0.0494373636250245\\
|
||||||
|
-0.319068003880211 -0\\
|
||||||
|
-0.294524311274046 -0.0661029758684393\\
|
||||||
|
-0.269980618667873 -0.280784524800559\\
|
||||||
|
-0.2454369260617 -0.657474690551474\\
|
||||||
|
-0.220893233455534 -1.19458775500653\\
|
||||||
|
-0.196349540849361 -1.92980106861027\\
|
||||||
|
-0.171805848243189 -2.781939214681\\
|
||||||
|
-0.147262155637023 -3.82635324494866\\
|
||||||
|
-0.0981747704246843 -6.57941824337365\\
|
||||||
|
-0.0490873852123386 -9.47773091071146\\
|
||||||
|
-0.0245436926061728 -10.6809263718464\\
|
||||||
|
0 -11.2450827557943\\
|
||||||
|
0.0245436926061728 -10.6809263718464\\
|
||||||
|
0.0490873852123386 -9.47773091071146\\
|
||||||
|
0.0981747704246843 -6.57941824337366\\
|
||||||
|
0.147262155637023 -3.82635324494866\\
|
||||||
|
0.171805848243189 -2.781939214681\\
|
||||||
|
0.196349540849361 -1.92980106861027\\
|
||||||
|
0.220893233455534 -1.19458775500652\\
|
||||||
|
0.2454369260617 -0.657474690551474\\
|
||||||
|
0.269980618667873 -0.280784524800552\\
|
||||||
|
0.294524311274046 -0.0661029758684322\\
|
||||||
|
0.319068003880211 0\\
|
||||||
|
0.343611696486384 -0.0494373636250245\\
|
||||||
|
0.392699081698723 -0.315746347742085\\
|
||||||
|
0.417242774304896 -0.488474201410419\\
|
||||||
|
0.466330159517234 -0.886419690092346\\
|
||||||
|
0.490873852123407 -1.07552633714884\\
|
||||||
|
0.539961237335746 -1.4164302592139\\
|
||||||
|
0.564504929941918 -1.54010490273969\\
|
||||||
|
0.589048622548084 -1.62532409404639\\
|
||||||
|
0.613592315154257 -1.68776926339483\\
|
||||||
|
0.63813600776043 -1.71820525815976\\
|
||||||
|
0.662679700366596 -1.71494365777474\\
|
||||||
|
0.687223392972768 -1.67551731596784\\
|
||||||
|
0.711767085578934 -1.60767016561632\\
|
||||||
|
0.736310778185107 -1.48314193528621\\
|
||||||
|
0.76085447079128 -1.40105712246658\\
|
||||||
|
0.785398163397446 -1.35535922330764\\
|
||||||
|
0.834485548609791 -1.25547919459462\\
|
||||||
|
0.859029241215957 -1.32388103733548\\
|
||||||
|
0.88357293382213 -1.51630002589027\\
|
||||||
|
0.908116626428303 -1.74913747055684\\
|
||||||
|
0.932660319034468 -1.94697175864269\\
|
||||||
|
1.00629139685298 -2.46538205939333\\
|
||||||
|
1.03083508945915 -2.64179784593011\\
|
||||||
|
1.05537878206532 -2.7788187463398\\
|
||||||
|
1.07992247467149 -2.88584164144167\\
|
||||||
|
1.10446616727766 -2.97068360146258\\
|
||||||
|
1.12900985988383 -3.0316612426535\\
|
||||||
|
1.15355355249 -3.0594055914491\\
|
||||||
|
1.17809724509618 -3.0585714250521\\
|
||||||
|
1.22718463030851 -2.97707904052072\\
|
||||||
|
1.25172832291468 -2.94778942364624\\
|
||||||
|
1.27627201552085 -2.93615105708502\\
|
||||||
|
1.30081570812703 -2.93351704789858\\
|
||||||
|
1.32535940073319 -2.93820099699773\\
|
||||||
|
1.34990309333936 -3.0070332942214\\
|
||||||
|
1.37444678594554 -3.13389750127857\\
|
||||||
|
1.3989904785517 -3.29683622342827\\
|
||||||
|
1.42353417115788 -3.54761072032757\\
|
||||||
|
1.47262155637021 -4.1192135361535\\
|
||||||
|
1.49716524897639 -4.34815184803496\\
|
||||||
|
1.52170894158255 -4.5187929199835\\
|
||||||
|
1.54625263418873 -4.63831980162999\\
|
||||||
|
1.5707963267949 -4.70301446670535\\
|
||||||
|
1.59534001940106 -4.74564957733824\\
|
||||||
|
1.61988371200724 -4.8134815299776\\
|
||||||
|
1.64442740461341 -4.90272361408173\\
|
||||||
|
1.66897109721958 -4.95636002488353\\
|
||||||
|
1.69351478982575 -4.97451045806659\\
|
||||||
|
1.71805848243192 -4.97303502588234\\
|
||||||
|
1.74260217503809 -4.93802078574208\\
|
||||||
|
1.76714586764426 -4.91128987148945\\
|
||||||
|
1.79168956025043 -4.89778434539084\\
|
||||||
|
1.8162332528566 -4.94933187405054\\
|
||||||
|
1.84077694546277 -5.00995310954403\\
|
||||||
|
1.86532063806894 -5.06241865677818\\
|
||||||
|
1.88986433067511 -5.15834304528927\\
|
||||||
|
1.91440802328128 -5.34213348629677\\
|
||||||
|
1.93895171588745 -5.6349397663705\\
|
||||||
|
1.96349540849362 -6.06771072445017\\
|
||||||
|
1.98803910109979 -6.57390723520547\\
|
||||||
|
2.01258279370596 -7.04574805161646\\
|
||||||
|
2.03712648631213 -7.4271708098562\\
|
||||||
|
2.06167017891831 -7.69653976428778\\
|
||||||
|
2.08621387152447 -7.86197989534059\\
|
||||||
|
2.11075756413064 -7.98175190194559\\
|
||||||
|
2.13530125673681 -8.1165797444491\\
|
||||||
|
2.15984494934298 -8.30596285747854\\
|
||||||
|
2.18438864194916 -8.4380075354912\\
|
||||||
|
2.20893233455532 -8.43416110047679\\
|
||||||
|
2.23347602716149 -8.3659147804913\\
|
||||||
|
2.25801971976767 -8.27290604595129\\
|
||||||
|
2.28256341237383 -8.14161353993602\\
|
||||||
|
2.30710710498001 -8.06093370603606\\
|
||||||
|
2.33165079758618 -8.1409238489307\\
|
||||||
|
2.35619449019234 -8.39313608791177\\
|
||||||
|
2.38073818279852 -8.778725491267\\
|
||||||
|
2.40528187540468 -9.31388042827889\\
|
||||||
|
2.42982556801086 -10.1083695425263\\
|
||||||
|
2.45436926061703 -11.0536074564346\\
|
||||||
|
2.47891295322319 -11.8866214027661\\
|
||||||
|
2.50345664582937 -12.4271267312005\\
|
||||||
|
2.52800033843554 -12.6991459702061\\
|
||||||
|
2.55254403104171 -12.8627077954076\\
|
||||||
|
2.57708772364788 -13.0159869302563\\
|
||||||
|
2.60163141625405 -13.2711055669692\\
|
||||||
|
2.62617510886022 -13.7282789909322\\
|
||||||
|
2.67526249407256 -14.9152364147404\\
|
||||||
|
2.7243498792849 -15.9603331293506\\
|
||||||
|
2.74889357189107 -16.4303665810851\\
|
||||||
|
2.77343726449724 -16.8570972623589\\
|
||||||
|
2.79798095710341 -17.3300455020857\\
|
||||||
|
2.82252464970958 -17.9427012862682\\
|
||||||
|
2.84706834231575 -18.7656037743951\\
|
||||||
|
2.87161203492192 -19.8241749566727\\
|
||||||
|
2.89615572752809 -21.0738850792815\\
|
||||||
|
2.92069942013426 -22.423178321796\\
|
||||||
|
2.94524311274043 -23.8596801342157\\
|
||||||
|
2.9697868053466 -25.5045988241004\\
|
||||||
|
2.99433049795277 -27.4518090423811\\
|
||||||
|
3.01887419055894 -29.5850728981767\\
|
||||||
|
3.04341788316511 -32.5498276313891\\
|
||||||
|
3.06796157577129 -36.9286792174989\\
|
||||||
|
3.09250526837745 -42.8433185127069\\
|
||||||
|
3.11704896098362 -40.1613695561787\\
|
||||||
|
3.1415926535898 -34.8799159666441\\
|
||||||
|
};
|
||||||
|
\addlegendentry{DB out19.2665}
|
||||||
|
|
||||||
|
\end{axis}
|
||||||
|
|
||||||
|
\begin{axis}[%
|
||||||
|
width=1.227\fwidth,
|
||||||
|
height=1.227\fheight,
|
||||||
|
at={(-0.16\fwidth,-0.135\fheight)},
|
||||||
|
scale only axis,
|
||||||
|
xmin=0,
|
||||||
|
xmax=1,
|
||||||
|
ymin=0,
|
||||||
|
ymax=1,
|
||||||
|
axis line style={draw=none},
|
||||||
|
ticks=none,
|
||||||
|
axis x line*=bottom,
|
||||||
|
axis y line*=left,
|
||||||
|
xmajorgrids,
|
||||||
|
ymajorgrids
|
||||||
|
]
|
||||||
|
\end{axis}
|
||||||
|
\end{tikzpicture}%
|
||||||
276
db_eq_wo_mpi.tex
Normal file
276
db_eq_wo_mpi.tex
Normal file
@@ -0,0 +1,276 @@
|
|||||||
|
% This file was created by matlab2tikz.
|
||||||
|
%
|
||||||
|
%The latest updates can be retrieved from
|
||||||
|
% http://www.mathworks.com/matlabcentral/fileexchange/22022-matlab2tikz-matlab2tikz
|
||||||
|
%where you can also make suggestions and rate matlab2tikz.
|
||||||
|
%
|
||||||
|
\definecolor{mycolor1}{rgb}{0.89020,0.10196,0.10980}%
|
||||||
|
%
|
||||||
|
\begin{tikzpicture}
|
||||||
|
|
||||||
|
\begin{axis}[%
|
||||||
|
width=0.951\fwidth,
|
||||||
|
height=\fheight,
|
||||||
|
at={(0\fwidth,0\fheight)},
|
||||||
|
scale only axis,
|
||||||
|
xmin=-3.14159265358979,
|
||||||
|
xmax=3.14159265358979,
|
||||||
|
xlabel style={font=\color{white!15!black}},
|
||||||
|
xlabel={Normalized Frequency},
|
||||||
|
ymin=-46,
|
||||||
|
ymax=3,
|
||||||
|
ytick={-200, -190, -180, -170, -160, -150, -140, -130, -120, -110, -100, -90, -80, -70, -60, -50, -40, -30, -20, -10, 0, 10},
|
||||||
|
ylabel style={font=\color{white!15!black}},
|
||||||
|
ylabel={normalized to 0 dB},
|
||||||
|
axis background/.style={fill=white},
|
||||||
|
axis x line*=bottom,
|
||||||
|
axis y line*=left,
|
||||||
|
xmajorgrids,
|
||||||
|
ymajorgrids,
|
||||||
|
legend style={legend cell align=left, align=left, draw=white!15!black}
|
||||||
|
]
|
||||||
|
\addplot [color=mycolor1, line width=1.0pt]
|
||||||
|
table[row sep=crcr]{%
|
||||||
|
-3.11704896098362 -35.5782004188707\\
|
||||||
|
-3.09250526837745 -33.1159623086625\\
|
||||||
|
-3.06796157577129 -29.8127430785645\\
|
||||||
|
-3.04341788316511 -27.1142231619025\\
|
||||||
|
-3.01887419055894 -24.9816651036867\\
|
||||||
|
-2.99433049795277 -23.2550131042722\\
|
||||||
|
-2.9697868053466 -21.7690569330913\\
|
||||||
|
-2.94524311274043 -20.5282040877856\\
|
||||||
|
-2.92069942013426 -19.5466143865162\\
|
||||||
|
-2.87161203492192 -17.8570502294022\\
|
||||||
|
-2.84706834231575 -17.1174741970484\\
|
||||||
|
-2.82252464970958 -16.4882067469752\\
|
||||||
|
-2.79798095710341 -15.9631811263125\\
|
||||||
|
-2.74889357189107 -15.040897271394\\
|
||||||
|
-2.7243498792849 -14.4824420267243\\
|
||||||
|
-2.67526249407256 -13.1757573992517\\
|
||||||
|
-2.62617510886022 -11.8206968465478\\
|
||||||
|
-2.60163141625405 -11.3586194137695\\
|
||||||
|
-2.57708772364788 -11.1512196798002\\
|
||||||
|
-2.55254403104171 -11.1141125004655\\
|
||||||
|
-2.52800033843554 -11.1356970410682\\
|
||||||
|
-2.50345664582937 -11.1042663245222\\
|
||||||
|
-2.47891295322319 -10.8457113724973\\
|
||||||
|
-2.45436926061703 -10.2509043772106\\
|
||||||
|
-2.42982556801086 -9.49600909903207\\
|
||||||
|
-2.40528187540468 -8.91571719428563\\
|
||||||
|
-2.38073818279852 -8.56674653189375\\
|
||||||
|
-2.35619449019234 -8.30608957254529\\
|
||||||
|
-2.33165079758618 -8.07333298133048\\
|
||||||
|
-2.30710710498001 -7.90854344190689\\
|
||||||
|
-2.28256341237383 -7.81114175561396\\
|
||||||
|
-2.25801971976767 -7.72909129645249\\
|
||||||
|
-2.23347602716149 -7.62278081883213\\
|
||||||
|
-2.20893233455532 -7.50934135816258\\
|
||||||
|
-2.18438864194916 -7.34162072128382\\
|
||||||
|
-2.15984494934298 -7.05197027921345\\
|
||||||
|
-2.13530125673681 -6.72846162821838\\
|
||||||
|
-2.11075756413064 -6.504146636756\\
|
||||||
|
-2.06167017891831 -6.18679569976343\\
|
||||||
|
-2.03712648631213 -5.98544377852629\\
|
||||||
|
-2.01258279370596 -5.7268545940405\\
|
||||||
|
-1.96349540849362 -5.10207648230094\\
|
||||||
|
-1.93895171588745 -4.85548883097329\\
|
||||||
|
-1.91440802328128 -4.71795834646901\\
|
||||||
|
-1.88986433067511 -4.65821693591604\\
|
||||||
|
-1.86532063806894 -4.66014145162995\\
|
||||||
|
-1.84077694546277 -4.65493723917044\\
|
||||||
|
-1.8162332528566 -4.59055661230468\\
|
||||||
|
-1.79168956025043 -4.4864244064304\\
|
||||||
|
-1.76714586764426 -4.40468844343732\\
|
||||||
|
-1.74260217503809 -4.29729371979585\\
|
||||||
|
-1.71805848243192 -4.15868013907824\\
|
||||||
|
-1.69351478982575 -3.98304771525945\\
|
||||||
|
-1.66897109721958 -3.79412377848772\\
|
||||||
|
-1.61988371200724 -3.35829857637475\\
|
||||||
|
-1.59534001940106 -3.21155314163612\\
|
||||||
|
-1.5707963267949 -3.14335782104515\\
|
||||||
|
-1.54625263418873 -3.11025013724856\\
|
||||||
|
-1.49716524897639 -3.03771327815913\\
|
||||||
|
-1.47262155637021 -2.96542246404228\\
|
||||||
|
-1.44807786376405 -2.87345583737682\\
|
||||||
|
-1.42353417115788 -2.75279980788936\\
|
||||||
|
-1.3989904785517 -2.654987976207\\
|
||||||
|
-1.37444678594554 -2.58255627944738\\
|
||||||
|
-1.32535940073319 -2.47749537435604\\
|
||||||
|
-1.30081570812703 -2.42926024690468\\
|
||||||
|
-1.27627201552085 -2.36648968572744\\
|
||||||
|
-1.25172832291468 -2.28236363181344\\
|
||||||
|
-1.22718463030851 -2.18293152968466\\
|
||||||
|
-1.20264093770234 -2.05603615965727\\
|
||||||
|
-1.17809724509618 -1.93721440822181\\
|
||||||
|
-1.15355355249 -1.84295801281856\\
|
||||||
|
-1.12900985988383 -1.75506184318309\\
|
||||||
|
-1.07992247467149 -1.62153330633635\\
|
||||||
|
-1.05537878206532 -1.57859378742956\\
|
||||||
|
-1.03083508945915 -1.52956038827949\\
|
||||||
|
-1.00629139685298 -1.47648612994634\\
|
||||||
|
-0.932660319034468 -1.25222217345828\\
|
||||||
|
-0.908116626428303 -1.17388047239177\\
|
||||||
|
-0.88357293382213 -1.08991913238873\\
|
||||||
|
-0.859029241215957 -1.0262928345747\\
|
||||||
|
-0.834485548609791 -0.996923088744765\\
|
||||||
|
-0.809941856003618 -0.984189869128095\\
|
||||||
|
-0.785398163397446 -0.957970382685453\\
|
||||||
|
-0.76085447079128 -0.928971074953964\\
|
||||||
|
-0.736310778185107 -0.892174695809111\\
|
||||||
|
-0.711767085578934 -0.84622157240419\\
|
||||||
|
-0.63813600776043 -0.69126953432994\\
|
||||||
|
-0.589048622548084 -0.542550375291384\\
|
||||||
|
-0.564504929941918 -0.491672510477834\\
|
||||||
|
-0.539961237335746 -0.46643717780092\\
|
||||||
|
-0.515417544729573 -0.465110728576775\\
|
||||||
|
-0.490873852123407 -0.488012994046102\\
|
||||||
|
-0.466330159517234 -0.553875213284073\\
|
||||||
|
-0.441786466911061 -0.60431464496255\\
|
||||||
|
-0.417242774304896 -0.679993294821351\\
|
||||||
|
-0.392699081698723 -0.734482253211944\\
|
||||||
|
-0.368155389092557 -0.721399317000689\\
|
||||||
|
-0.343611696486384 -0.619598926472982\\
|
||||||
|
-0.294524311274046 -0.30630258882568\\
|
||||||
|
-0.269980618667873 -0.169900080060494\\
|
||||||
|
-0.2454369260617 -0.0760700467178523\\
|
||||||
|
-0.220893233455534 -0.0321032252202613\\
|
||||||
|
-0.171805848243189 -0\\
|
||||||
|
-0.147262155637023 -0.0160755308971048\\
|
||||||
|
-0.12271846303085 -0.0519964181031938\\
|
||||||
|
-0.0981747704246843 -0.156635723284822\\
|
||||||
|
-0.0245436926061728 -0.499771678339783\\
|
||||||
|
0 -0.565174080829159\\
|
||||||
|
0.0245436926061728 -0.499771678339776\\
|
||||||
|
0.0490873852123386 -0.381706064715679\\
|
||||||
|
0.12271846303085 -0.0519964181031867\\
|
||||||
|
0.147262155637023 -0.0160755308971048\\
|
||||||
|
0.171805848243189 0\\
|
||||||
|
0.220893233455534 -0.0321032252202613\\
|
||||||
|
0.2454369260617 -0.0760700467178523\\
|
||||||
|
0.269980618667873 -0.169900080060494\\
|
||||||
|
0.294524311274046 -0.30630258882568\\
|
||||||
|
0.343611696486384 -0.619598926472982\\
|
||||||
|
0.368155389092557 -0.721399317000689\\
|
||||||
|
0.392699081698723 -0.734482253211951\\
|
||||||
|
0.417242774304896 -0.679993294821351\\
|
||||||
|
0.441786466911061 -0.60431464496255\\
|
||||||
|
0.466330159517234 -0.553875213284073\\
|
||||||
|
0.490873852123407 -0.488012994046102\\
|
||||||
|
0.515417544729573 -0.465110728576775\\
|
||||||
|
0.539961237335746 -0.466437177800927\\
|
||||||
|
0.564504929941918 -0.491672510477834\\
|
||||||
|
0.589048622548084 -0.542550375291384\\
|
||||||
|
0.63813600776043 -0.69126953432994\\
|
||||||
|
0.687223392972768 -0.795648160574636\\
|
||||||
|
0.711767085578934 -0.846221572404183\\
|
||||||
|
0.736310778185107 -0.892174695809111\\
|
||||||
|
0.76085447079128 -0.928971074953964\\
|
||||||
|
0.785398163397446 -0.957970382685453\\
|
||||||
|
0.809941856003618 -0.984189869128095\\
|
||||||
|
0.834485548609791 -0.996923088744765\\
|
||||||
|
0.859029241215957 -1.0262928345747\\
|
||||||
|
0.88357293382213 -1.08991913238873\\
|
||||||
|
0.908116626428303 -1.17388047239177\\
|
||||||
|
0.932660319034468 -1.25222217345828\\
|
||||||
|
0.957204011640641 -1.32373537243189\\
|
||||||
|
1.00629139685298 -1.47648612994634\\
|
||||||
|
1.03083508945915 -1.52956038827949\\
|
||||||
|
1.05537878206532 -1.57859378742956\\
|
||||||
|
1.07992247467149 -1.62153330633635\\
|
||||||
|
1.10446616727766 -1.68626503805518\\
|
||||||
|
1.12900985988383 -1.75506184318309\\
|
||||||
|
1.15355355249 -1.84295801281856\\
|
||||||
|
1.17809724509618 -1.93721440822181\\
|
||||||
|
1.20264093770234 -2.05603615965727\\
|
||||||
|
1.22718463030851 -2.18293152968467\\
|
||||||
|
1.25172832291468 -2.28236363181345\\
|
||||||
|
1.27627201552085 -2.36648968572745\\
|
||||||
|
1.30081570812703 -2.42926024690468\\
|
||||||
|
1.32535940073319 -2.47749537435604\\
|
||||||
|
1.37444678594554 -2.58255627944738\\
|
||||||
|
1.3989904785517 -2.65498797620701\\
|
||||||
|
1.42353417115788 -2.75279980788936\\
|
||||||
|
1.44807786376405 -2.87345583737682\\
|
||||||
|
1.47262155637021 -2.96542246404228\\
|
||||||
|
1.49716524897639 -3.03771327815913\\
|
||||||
|
1.54625263418873 -3.11025013724856\\
|
||||||
|
1.5707963267949 -3.14335782104514\\
|
||||||
|
1.59534001940106 -3.21155314163612\\
|
||||||
|
1.61988371200724 -3.35829857637475\\
|
||||||
|
1.66897109721958 -3.79412377848772\\
|
||||||
|
1.69351478982575 -3.98304771525944\\
|
||||||
|
1.71805848243192 -4.15868013907824\\
|
||||||
|
1.74260217503809 -4.29729371979585\\
|
||||||
|
1.76714586764426 -4.40468844343732\\
|
||||||
|
1.79168956025043 -4.4864244064304\\
|
||||||
|
1.8162332528566 -4.59055661230469\\
|
||||||
|
1.84077694546277 -4.65493723917044\\
|
||||||
|
1.86532063806894 -4.66014145162995\\
|
||||||
|
1.88986433067511 -4.65821693591604\\
|
||||||
|
1.91440802328128 -4.71795834646901\\
|
||||||
|
1.93895171588745 -4.85548883097329\\
|
||||||
|
1.96349540849362 -5.10207648230094\\
|
||||||
|
2.01258279370596 -5.7268545940405\\
|
||||||
|
2.03712648631213 -5.98544377852629\\
|
||||||
|
2.06167017891831 -6.18679569976344\\
|
||||||
|
2.11075756413064 -6.504146636756\\
|
||||||
|
2.13530125673681 -6.72846162821838\\
|
||||||
|
2.15984494934298 -7.05197027921345\\
|
||||||
|
2.18438864194916 -7.34162072128382\\
|
||||||
|
2.20893233455532 -7.50934135816258\\
|
||||||
|
2.23347602716149 -7.62278081883213\\
|
||||||
|
2.25801971976767 -7.72909129645249\\
|
||||||
|
2.28256341237383 -7.81114175561396\\
|
||||||
|
2.30710710498001 -7.90854344190689\\
|
||||||
|
2.33165079758618 -8.07333298133048\\
|
||||||
|
2.35619449019234 -8.30608957254529\\
|
||||||
|
2.38073818279852 -8.56674653189375\\
|
||||||
|
2.40528187540468 -8.91571719428563\\
|
||||||
|
2.42982556801086 -9.49600909903207\\
|
||||||
|
2.45436926061703 -10.2509043772106\\
|
||||||
|
2.47891295322319 -10.8457113724973\\
|
||||||
|
2.50345664582937 -11.1042663245222\\
|
||||||
|
2.52800033843554 -11.1356970410682\\
|
||||||
|
2.55254403104171 -11.1141125004655\\
|
||||||
|
2.57708772364788 -11.1512196798002\\
|
||||||
|
2.60163141625405 -11.3586194137695\\
|
||||||
|
2.62617510886022 -11.8206968465478\\
|
||||||
|
2.7243498792849 -14.4824420267244\\
|
||||||
|
2.74889357189107 -15.0408972714706\\
|
||||||
|
2.79798095710341 -15.9631811263036\\
|
||||||
|
2.82252464970958 -16.4882067465251\\
|
||||||
|
2.84706834231575 -17.1174741963807\\
|
||||||
|
2.87161203492192 -17.8570490225173\\
|
||||||
|
2.89615572752809 -18.6774208577484\\
|
||||||
|
2.92069942013426 -19.5466157773339\\
|
||||||
|
2.94524311274043 -20.5282137117928\\
|
||||||
|
2.9697868053466 -21.7690828912817\\
|
||||||
|
2.99433049795277 -23.3639330048926\\
|
||||||
|
3.01887419055894 -25.1309853229038\\
|
||||||
|
3.04341788316511 -27.3374155587587\\
|
||||||
|
3.06796157577129 -30.2196680996993\\
|
||||||
|
3.11704896098362 -37.8881022767508\\
|
||||||
|
3.1415926535898 -35.937686895609\\
|
||||||
|
};
|
||||||
|
\addlegendentry{DB out47.1757}
|
||||||
|
|
||||||
|
\end{axis}
|
||||||
|
|
||||||
|
\begin{axis}[%
|
||||||
|
width=1.227\fwidth,
|
||||||
|
height=1.227\fheight,
|
||||||
|
at={(-0.16\fwidth,-0.135\fheight)},
|
||||||
|
scale only axis,
|
||||||
|
xmin=0,
|
||||||
|
xmax=1,
|
||||||
|
ymin=0,
|
||||||
|
ymax=1,
|
||||||
|
axis line style={draw=none},
|
||||||
|
ticks=none,
|
||||||
|
axis x line*=bottom,
|
||||||
|
axis y line*=left,
|
||||||
|
xmajorgrids,
|
||||||
|
ymajorgrids
|
||||||
|
]
|
||||||
|
\end{axis}
|
||||||
|
\end{tikzpicture}%
|
||||||
295
db_noise_mpi.tex
Normal file
295
db_noise_mpi.tex
Normal file
@@ -0,0 +1,295 @@
|
|||||||
|
% This file was created by matlab2tikz.
|
||||||
|
%
|
||||||
|
%The latest updates can be retrieved from
|
||||||
|
% http://www.mathworks.com/matlabcentral/fileexchange/22022-matlab2tikz-matlab2tikz
|
||||||
|
%where you can also make suggestions and rate matlab2tikz.
|
||||||
|
%
|
||||||
|
\definecolor{mycolor1}{rgb}{0.89020,0.10196,0.10980}%
|
||||||
|
%
|
||||||
|
\begin{tikzpicture}
|
||||||
|
|
||||||
|
\begin{axis}[%
|
||||||
|
width=0.951\fwidth,
|
||||||
|
height=\fheight,
|
||||||
|
at={(0\fwidth,0\fheight)},
|
||||||
|
scale only axis,
|
||||||
|
xmin=-3.14159265358979,
|
||||||
|
xmax=3.14159265358979,
|
||||||
|
xlabel style={font=\color{white!15!black}},
|
||||||
|
xlabel={Normalized Frequency},
|
||||||
|
ymin=-35,
|
||||||
|
ymax=0,
|
||||||
|
ytick={-200, -190, -180, -170, -160, -150, -140, -130, -120, -110, -100, -90, -80, -70, -60, -50, -40, -30, -20, -10, 0, 10},
|
||||||
|
ylabel style={font=\color{white!15!black}},
|
||||||
|
ylabel={normalized to 0 dB},
|
||||||
|
axis background/.style={fill=white},
|
||||||
|
axis x line*=bottom,
|
||||||
|
axis y line*=left,
|
||||||
|
xmajorgrids,
|
||||||
|
xminorgrids,
|
||||||
|
ymajorgrids,
|
||||||
|
yminorgrids,
|
||||||
|
legend style={legend cell align=left, align=left, draw=white!15!black}
|
||||||
|
]
|
||||||
|
\addplot [color=mycolor1, line width=1.0pt]
|
||||||
|
table[row sep=crcr]{%
|
||||||
|
-3.11704896098362 -34.3131450488072\\
|
||||||
|
-3.09250526837745 -22.267196196234\\
|
||||||
|
-3.06796157577129 -19.6346895905463\\
|
||||||
|
-3.04341788316511 -18.1952524397801\\
|
||||||
|
-3.01887419055894 -17.2592174472064\\
|
||||||
|
-2.99433049795277 -16.5769279469376\\
|
||||||
|
-2.9697868053466 -16.090951771503\\
|
||||||
|
-2.94524311274043 -16.0046100828047\\
|
||||||
|
-2.92069942013426 -15.8418247678835\\
|
||||||
|
-2.89615572752809 -15.3149223521918\\
|
||||||
|
-2.87161203492192 -14.658730543711\\
|
||||||
|
-2.84706834231575 -14.1277333218487\\
|
||||||
|
-2.82252464970958 -13.7205707193609\\
|
||||||
|
-2.79798095710341 -13.3952353522632\\
|
||||||
|
-2.77343726449724 -13.1831608890304\\
|
||||||
|
-2.7243498792849 -12.9357026724654\\
|
||||||
|
-2.69980618667873 -12.7853157461907\\
|
||||||
|
-2.67526249407256 -12.6608293199766\\
|
||||||
|
-2.65071880146639 -12.5994351134766\\
|
||||||
|
-2.62617510886022 -12.5594134618066\\
|
||||||
|
-2.60163141625405 -12.252405861374\\
|
||||||
|
-2.55254403104171 -10.9940967498421\\
|
||||||
|
-2.52800033843554 -10.5275867823918\\
|
||||||
|
-2.50345664582937 -10.4307919970419\\
|
||||||
|
-2.47891295322319 -10.7441236244153\\
|
||||||
|
-2.45436926061703 -11.3443158297057\\
|
||||||
|
-2.42982556801086 -11.9038524771046\\
|
||||||
|
-2.40528187540468 -11.8977758894782\\
|
||||||
|
-2.38073818279852 -11.4032305242715\\
|
||||||
|
-2.35619449019234 -10.8206876678612\\
|
||||||
|
-2.33165079758618 -10.3655775288927\\
|
||||||
|
-2.30710710498001 -10.1411502371605\\
|
||||||
|
-2.28256341237383 -10.0275725518735\\
|
||||||
|
-2.25801971976767 -9.79947146240389\\
|
||||||
|
-2.23347602716149 -9.44254273389932\\
|
||||||
|
-2.18438864194916 -8.66113441860007\\
|
||||||
|
-2.15984494934298 -8.32312800793783\\
|
||||||
|
-2.11075756413064 -7.79280902100031\\
|
||||||
|
-2.08621387152447 -7.45195580784125\\
|
||||||
|
-2.06167017891831 -7.18469013477623\\
|
||||||
|
-2.03712648631213 -7.11040672526116\\
|
||||||
|
-2.01258279370596 -7.22639646388401\\
|
||||||
|
-1.98803910109979 -7.51517990964668\\
|
||||||
|
-1.96349540849362 -7.93800563912671\\
|
||||||
|
-1.93895171588745 -8.29828148114878\\
|
||||||
|
-1.91440802328128 -8.387179482289\\
|
||||||
|
-1.88986433067511 -8.28530306362875\\
|
||||||
|
-1.86532063806894 -8.20282444470519\\
|
||||||
|
-1.84077694546277 -8.19381257640935\\
|
||||||
|
-1.8162332528566 -8.1599225730401\\
|
||||||
|
-1.79168956025043 -8.01820487442049\\
|
||||||
|
-1.76714586764426 -7.56130073272246\\
|
||||||
|
-1.74260217503809 -7.14061573945742\\
|
||||||
|
-1.71805848243192 -6.62682673757766\\
|
||||||
|
-1.69351478982575 -6.19223388107344\\
|
||||||
|
-1.66897109721958 -5.90625549009543\\
|
||||||
|
-1.64442740461341 -5.74369686649744\\
|
||||||
|
-1.61988371200724 -5.70472998208211\\
|
||||||
|
-1.59534001940106 -5.63935449974836\\
|
||||||
|
-1.5707963267949 -5.55146369024497\\
|
||||||
|
-1.54625263418873 -5.55135711200268\\
|
||||||
|
-1.52170894158255 -5.61443959310917\\
|
||||||
|
-1.49716524897639 -5.72500445090551\\
|
||||||
|
-1.47262155637021 -5.93402555559094\\
|
||||||
|
-1.44807786376405 -6.24769554324589\\
|
||||||
|
-1.42353417115788 -6.51551248033976\\
|
||||||
|
-1.3989904785517 -6.74232519069472\\
|
||||||
|
-1.37444678594554 -6.77048169178611\\
|
||||||
|
-1.34990309333936 -6.67391454327632\\
|
||||||
|
-1.32535940073319 -6.51628877937085\\
|
||||||
|
-1.27627201552085 -6.1030106496908\\
|
||||||
|
-1.25172832291468 -5.93485117988067\\
|
||||||
|
-1.22718463030851 -5.87756181550613\\
|
||||||
|
-1.20264093770234 -5.85961739672202\\
|
||||||
|
-1.17809724509618 -5.83345817542033\\
|
||||||
|
-1.15355355249 -5.78901638459508\\
|
||||||
|
-1.12900985988383 -5.68962723876609\\
|
||||||
|
-1.10446616727766 -5.54337665236435\\
|
||||||
|
-1.07992247467149 -5.36856900781121\\
|
||||||
|
-1.05537878206532 -5.21670034258733\\
|
||||||
|
-1.03083508945915 -5.10731269634078\\
|
||||||
|
-1.00629139685298 -5.01734118293459\\
|
||||||
|
-0.981747704246807 -4.97536935522933\\
|
||||||
|
-0.957204011640641 -4.97971773581759\\
|
||||||
|
-0.932660319034468 -5.034237466321\\
|
||||||
|
-0.908116626428303 -5.09928298231328\\
|
||||||
|
-0.88357293382213 -5.12622376596804\\
|
||||||
|
-0.859029241215957 -5.12356760360715\\
|
||||||
|
-0.834485548609791 -5.18926715032397\\
|
||||||
|
-0.809941856003618 -5.24776542972374\\
|
||||||
|
-0.785398163397446 -5.3398222380389\\
|
||||||
|
-0.76085447079128 -5.36523740936401\\
|
||||||
|
-0.736310778185107 -5.26486466619456\\
|
||||||
|
-0.711767085578934 -5.0551647745266\\
|
||||||
|
-0.687223392972768 -4.7404255947558\\
|
||||||
|
-0.662679700366596 -4.32316600023172\\
|
||||||
|
-0.63813600776043 -4.06213468290632\\
|
||||||
|
-0.613592315154257 -3.93585700038375\\
|
||||||
|
-0.589048622548084 -3.93578572547992\\
|
||||||
|
-0.564504929941918 -4.09417112434627\\
|
||||||
|
-0.539961237335746 -4.44194577474517\\
|
||||||
|
-0.515417544729573 -4.75916484246466\\
|
||||||
|
-0.490873852123407 -4.93749189095814\\
|
||||||
|
-0.466330159517234 -5.05192489877623\\
|
||||||
|
-0.441786466911061 -4.99827294144359\\
|
||||||
|
-0.417242774304896 -4.82034500119954\\
|
||||||
|
-0.392699081698723 -4.53631000669057\\
|
||||||
|
-0.368155389092557 -4.16237685284171\\
|
||||||
|
-0.343611696486384 -3.71750617836146\\
|
||||||
|
-0.319068003880211 -3.22184120926914\\
|
||||||
|
-0.171805848243189 -0\\
|
||||||
|
-0.147262155637023 -2.42164758505762\\
|
||||||
|
-0.12271846303085 -2.55785798440041\\
|
||||||
|
-0.0981747704246843 -2.39339347291558\\
|
||||||
|
-0.0736310778185114 -1.97663231386586\\
|
||||||
|
-0.0490873852123386 -1.70870310785322\\
|
||||||
|
-0.0245436926061728 -1.48162490657379\\
|
||||||
|
0 -1.38410632608296\\
|
||||||
|
0.0245436926061728 -1.48162490657379\\
|
||||||
|
0.0490873852123386 -1.70870310785322\\
|
||||||
|
0.0736310778185114 -1.97663231386586\\
|
||||||
|
0.0981747704246843 -2.39339347291558\\
|
||||||
|
0.12271846303085 -2.55785798440041\\
|
||||||
|
0.147262155637023 -2.42164758505762\\
|
||||||
|
0.171805848243189 0\\
|
||||||
|
0.220893233455534 -1.05640831862885\\
|
||||||
|
0.319068003880211 -3.22184120926914\\
|
||||||
|
0.343611696486384 -3.71750617836146\\
|
||||||
|
0.368155389092557 -4.16237685284171\\
|
||||||
|
0.392699081698723 -4.53631000669057\\
|
||||||
|
0.417242774304896 -4.82034500119954\\
|
||||||
|
0.441786466911061 -4.99827294144359\\
|
||||||
|
0.466330159517234 -5.05192489877624\\
|
||||||
|
0.490873852123407 -4.93749189095814\\
|
||||||
|
0.515417544729573 -4.75916484246466\\
|
||||||
|
0.539961237335746 -4.44194577474517\\
|
||||||
|
0.564504929941918 -4.09417112434627\\
|
||||||
|
0.589048622548084 -3.93578572547992\\
|
||||||
|
0.613592315154257 -3.93585700038375\\
|
||||||
|
0.63813600776043 -4.06213468290632\\
|
||||||
|
0.662679700366596 -4.32316600023172\\
|
||||||
|
0.687223392972768 -4.7404255947558\\
|
||||||
|
0.711767085578934 -5.05516477452661\\
|
||||||
|
0.736310778185107 -5.26486466619456\\
|
||||||
|
0.76085447079128 -5.36523740936401\\
|
||||||
|
0.785398163397446 -5.3398222380389\\
|
||||||
|
0.809941856003618 -5.24776542972374\\
|
||||||
|
0.834485548609791 -5.18926715032396\\
|
||||||
|
0.859029241215957 -5.12356760360715\\
|
||||||
|
0.88357293382213 -5.12622376596804\\
|
||||||
|
0.908116626428303 -5.09928298231328\\
|
||||||
|
0.932660319034468 -5.034237466321\\
|
||||||
|
0.957204011640641 -4.97971773581759\\
|
||||||
|
0.981747704246807 -4.97536935522933\\
|
||||||
|
1.00629139685298 -5.01734118293459\\
|
||||||
|
1.03083508945915 -5.10731269634078\\
|
||||||
|
1.05537878206532 -5.21670034258733\\
|
||||||
|
1.07992247467149 -5.36856900781121\\
|
||||||
|
1.10446616727766 -5.54337665236435\\
|
||||||
|
1.12900985988383 -5.68962723876609\\
|
||||||
|
1.15355355249 -5.78901638459508\\
|
||||||
|
1.17809724509618 -5.83345817542033\\
|
||||||
|
1.20264093770234 -5.85961739672201\\
|
||||||
|
1.22718463030851 -5.87756181550613\\
|
||||||
|
1.25172832291468 -5.93485117988067\\
|
||||||
|
1.27627201552085 -6.10301064969081\\
|
||||||
|
1.32535940073319 -6.51628877937085\\
|
||||||
|
1.34990309333936 -6.67391454327632\\
|
||||||
|
1.37444678594554 -6.77048169178612\\
|
||||||
|
1.3989904785517 -6.74232519069473\\
|
||||||
|
1.42353417115788 -6.51551248033977\\
|
||||||
|
1.44807786376405 -6.24769554324589\\
|
||||||
|
1.47262155637021 -5.93402555559094\\
|
||||||
|
1.49716524897639 -5.72500445090551\\
|
||||||
|
1.52170894158255 -5.61443959310918\\
|
||||||
|
1.54625263418873 -5.55135711200268\\
|
||||||
|
1.5707963267949 -5.55146369024497\\
|
||||||
|
1.59534001940106 -5.63935449974836\\
|
||||||
|
1.61988371200724 -5.7047299820821\\
|
||||||
|
1.64442740461341 -5.74369686649744\\
|
||||||
|
1.66897109721958 -5.90625549009542\\
|
||||||
|
1.69351478982575 -6.19223388107344\\
|
||||||
|
1.71805848243192 -6.62682673757765\\
|
||||||
|
1.74260217503809 -7.14061573945742\\
|
||||||
|
1.76714586764426 -7.56130073272246\\
|
||||||
|
1.79168956025043 -8.01820487442049\\
|
||||||
|
1.8162332528566 -8.1599225730401\\
|
||||||
|
1.84077694546277 -8.19381257640935\\
|
||||||
|
1.86532063806894 -8.20282444470519\\
|
||||||
|
1.88986433067511 -8.28530306362875\\
|
||||||
|
1.91440802328128 -8.387179482289\\
|
||||||
|
1.93895171588745 -8.29828148114878\\
|
||||||
|
1.96349540849362 -7.93800563912671\\
|
||||||
|
1.98803910109979 -7.51517990964668\\
|
||||||
|
2.01258279370596 -7.22639646388401\\
|
||||||
|
2.03712648631213 -7.11040672526116\\
|
||||||
|
2.06167017891831 -7.18469013477623\\
|
||||||
|
2.08621387152447 -7.45195580784125\\
|
||||||
|
2.11075756413064 -7.79280902100031\\
|
||||||
|
2.15984494934298 -8.32312800793783\\
|
||||||
|
2.18438864194916 -8.66113441860008\\
|
||||||
|
2.23347602716149 -9.44254273389932\\
|
||||||
|
2.25801971976767 -9.79947146240389\\
|
||||||
|
2.28256341237383 -10.0275725518735\\
|
||||||
|
2.30710710498001 -10.1411502371605\\
|
||||||
|
2.33165079758618 -10.3655775288927\\
|
||||||
|
2.35619449019234 -10.8206876678612\\
|
||||||
|
2.38073818279852 -11.4032305242715\\
|
||||||
|
2.40528187540468 -11.8977758894782\\
|
||||||
|
2.42982556801086 -11.9038524771046\\
|
||||||
|
2.45436926061703 -11.3443158297057\\
|
||||||
|
2.47891295322319 -10.7441236244153\\
|
||||||
|
2.50345664582937 -10.4307919970419\\
|
||||||
|
2.52800033843554 -10.5275867823917\\
|
||||||
|
2.55254403104171 -10.9940967498419\\
|
||||||
|
2.60163141625405 -12.2524058613756\\
|
||||||
|
2.62617510886022 -12.5594134617074\\
|
||||||
|
2.65071880146639 -12.5994351136522\\
|
||||||
|
2.67526249407256 -12.660829319499\\
|
||||||
|
2.69980618667873 -12.7853157436709\\
|
||||||
|
2.7243498792849 -12.9357026694219\\
|
||||||
|
2.77343726449724 -13.1831605981046\\
|
||||||
|
2.79798095710341 -13.3952355524471\\
|
||||||
|
2.82252464970958 -13.7205723063792\\
|
||||||
|
2.84706834231575 -14.1277364158962\\
|
||||||
|
2.87161203492192 -14.6591344197684\\
|
||||||
|
2.89615572752809 -15.3153254629515\\
|
||||||
|
2.92069942013426 -15.8413568119397\\
|
||||||
|
2.94524311274043 -16.0023943536069\\
|
||||||
|
2.9697868053466 -16.0874143228353\\
|
||||||
|
2.99433049795277 -16.4203948950371\\
|
||||||
|
3.01887419055894 -17.2198129812753\\
|
||||||
|
3.04341788316511 -18.151481900993\\
|
||||||
|
3.06796157577129 -19.4062059756628\\
|
||||||
|
3.09250526837745 -21.3473313091987\\
|
||||||
|
3.11704896098362 -25.248496420222\\
|
||||||
|
3.1415926535898 -28.3767847971192\\
|
||||||
|
};
|
||||||
|
\addlegendentry{DB Noise19.2665}
|
||||||
|
|
||||||
|
\end{axis}
|
||||||
|
|
||||||
|
\begin{axis}[%
|
||||||
|
width=1.227\fwidth,
|
||||||
|
height=1.227\fheight,
|
||||||
|
at={(-0.16\fwidth,-0.135\fheight)},
|
||||||
|
scale only axis,
|
||||||
|
xmin=0,
|
||||||
|
xmax=1,
|
||||||
|
ymin=0,
|
||||||
|
ymax=1,
|
||||||
|
axis line style={draw=none},
|
||||||
|
ticks=none,
|
||||||
|
axis x line*=bottom,
|
||||||
|
axis y line*=left,
|
||||||
|
xmajorgrids,
|
||||||
|
ymajorgrids
|
||||||
|
]
|
||||||
|
\end{axis}
|
||||||
|
\end{tikzpicture}%
|
||||||
299
db_noise_wo_mpi.tex
Normal file
299
db_noise_wo_mpi.tex
Normal file
@@ -0,0 +1,299 @@
|
|||||||
|
% This file was created by matlab2tikz.
|
||||||
|
%
|
||||||
|
%The latest updates can be retrieved from
|
||||||
|
% http://www.mathworks.com/matlabcentral/fileexchange/22022-matlab2tikz-matlab2tikz
|
||||||
|
%where you can also make suggestions and rate matlab2tikz.
|
||||||
|
%
|
||||||
|
\definecolor{mycolor1}{rgb}{0.89020,0.10196,0.10980}%
|
||||||
|
%
|
||||||
|
\begin{tikzpicture}
|
||||||
|
|
||||||
|
\begin{axis}[%
|
||||||
|
width=0.951\fwidth,
|
||||||
|
height=\fheight,
|
||||||
|
at={(0\fwidth,0\fheight)},
|
||||||
|
scale only axis,
|
||||||
|
xmin=-3.14159265358979,
|
||||||
|
xmax=3.14159265358979,
|
||||||
|
xlabel style={font=\color{white!15!black}},
|
||||||
|
xlabel={Normalized Frequency},
|
||||||
|
ymin=-35,
|
||||||
|
ymax=3,
|
||||||
|
ytick={-200, -190, -180, -170, -160, -150, -140, -130, -120, -110, -100, -90, -80, -70, -60, -50, -40, -30, -20, -10, 0, 10},
|
||||||
|
ylabel style={font=\color{white!15!black}},
|
||||||
|
ylabel={normalized to 0 dB},
|
||||||
|
axis background/.style={fill=white},
|
||||||
|
axis x line*=bottom,
|
||||||
|
axis y line*=left,
|
||||||
|
xmajorgrids,
|
||||||
|
ymajorgrids,
|
||||||
|
legend style={legend cell align=left, align=left, draw=white!15!black}
|
||||||
|
]
|
||||||
|
\addplot [color=mycolor1, line width=1.0pt]
|
||||||
|
table[row sep=crcr]{%
|
||||||
|
-3.11704896098362 -29.56690412476\\
|
||||||
|
-3.09250526837745 -25.3644918186209\\
|
||||||
|
-3.06796157577128 -22.30730387375\\
|
||||||
|
-3.04341788316511 -19.9954524619813\\
|
||||||
|
-3.01887419055894 -18.1507513447907\\
|
||||||
|
-2.99433049795277 -16.6076585312891\\
|
||||||
|
-2.9697868053466 -15.2461686465389\\
|
||||||
|
-2.94524311274043 -14.2059915088232\\
|
||||||
|
-2.92069942013426 -13.4872968374207\\
|
||||||
|
-2.89615572752809 -12.7053099196834\\
|
||||||
|
-2.87161203492192 -11.7799752503431\\
|
||||||
|
-2.84706834231575 -10.9157197897258\\
|
||||||
|
-2.82252464970958 -10.2283939059761\\
|
||||||
|
-2.79798095710341 -9.76811722848216\\
|
||||||
|
-2.77343726449724 -9.60018105035478\\
|
||||||
|
-2.74889357189107 -9.63373286010098\\
|
||||||
|
-2.7243498792849 -9.59587490688709\\
|
||||||
|
-2.69980618667873 -9.37254772114989\\
|
||||||
|
-2.67526249407256 -9.05870610749954\\
|
||||||
|
-2.62617510886022 -8.52456927054195\\
|
||||||
|
-2.60163141625405 -8.03921949291331\\
|
||||||
|
-2.55254403104171 -6.68995050377789\\
|
||||||
|
-2.52800033843554 -6.25353078740822\\
|
||||||
|
-2.50345664582937 -6.19551569975192\\
|
||||||
|
-2.4789129532232 -6.59545901902654\\
|
||||||
|
-2.45436926061702 -7.30521855386077\\
|
||||||
|
-2.42982556801086 -7.85202206428982\\
|
||||||
|
-2.40528187540469 -7.71940845485185\\
|
||||||
|
-2.38073818279852 -6.98988271739371\\
|
||||||
|
-2.35619449019234 -6.05737033896411\\
|
||||||
|
-2.33165079758617 -5.21147393956923\\
|
||||||
|
-2.30710710498001 -4.65553527546583\\
|
||||||
|
-2.28256341237383 -4.37497436709315\\
|
||||||
|
-2.25801971976766 -4.24445427323096\\
|
||||||
|
-2.23347602716149 -4.23783848068609\\
|
||||||
|
-2.20893233455532 -4.38974561023634\\
|
||||||
|
-2.18438864194915 -4.64227723733761\\
|
||||||
|
-2.15984494934298 -4.87939584637504\\
|
||||||
|
-2.13530125673681 -5.06102058647945\\
|
||||||
|
-2.11075756413064 -5.1115797662322\\
|
||||||
|
-2.08621387152447 -4.74443552790122\\
|
||||||
|
-2.0616701789183 -4.11252781856745\\
|
||||||
|
-2.03712648631213 -3.57844099840829\\
|
||||||
|
-2.01258279370596 -3.15461107678053\\
|
||||||
|
-1.98803910109979 -2.97187224999008\\
|
||||||
|
-1.96349540849362 -3.11854439147683\\
|
||||||
|
-1.93895171588745 -3.32783807306128\\
|
||||||
|
-1.91440802328128 -3.42392975582494\\
|
||||||
|
-1.88986433067511 -3.42557304147892\\
|
||||||
|
-1.86532063806894 -3.36394467547953\\
|
||||||
|
-1.84077694546277 -3.30855026424176\\
|
||||||
|
-1.8162332528566 -3.14790250068943\\
|
||||||
|
-1.79168956025043 -2.92004953531518\\
|
||||||
|
-1.76714586764426 -2.66565529315556\\
|
||||||
|
-1.74260217503809 -2.38358723758726\\
|
||||||
|
-1.71805848243192 -2.21108638851551\\
|
||||||
|
-1.69351478982575 -2.22382786445652\\
|
||||||
|
-1.66897109721958 -2.43174036822529\\
|
||||||
|
-1.61988371200724 -3.20868918272751\\
|
||||||
|
-1.59534001940107 -3.40804148700824\\
|
||||||
|
-1.5707963267949 -3.46769295384922\\
|
||||||
|
-1.54625263418873 -3.44256929870861\\
|
||||||
|
-1.52170894158256 -3.34829866588534\\
|
||||||
|
-1.49716524897639 -3.18823276160444\\
|
||||||
|
-1.47262155637021 -3.0096158207128\\
|
||||||
|
-1.44807786376404 -2.80196796486164\\
|
||||||
|
-1.42353417115788 -2.57991209356132\\
|
||||||
|
-1.39899047855171 -2.39324891004939\\
|
||||||
|
-1.37444678594553 -2.17497178218852\\
|
||||||
|
-1.34990309333936 -1.9815178598944\\
|
||||||
|
-1.32535940073319 -1.86783751695322\\
|
||||||
|
-1.30081570812703 -1.86688379492939\\
|
||||||
|
-1.27627201552085 -1.87464022701403\\
|
||||||
|
-1.25172832291468 -1.82812211345248\\
|
||||||
|
-1.22718463030851 -1.78495277610481\\
|
||||||
|
-1.20264093770234 -1.80770510184558\\
|
||||||
|
-1.15355355249 -2.01822512349233\\
|
||||||
|
-1.12900985988383 -2.0104138728127\\
|
||||||
|
-1.10446616727766 -1.9854246410849\\
|
||||||
|
-1.07992247467149 -1.83098330554181\\
|
||||||
|
-1.05537878206532 -1.40389512308032\\
|
||||||
|
-1.03083508945915 -1.01656520978779\\
|
||||||
|
-1.00629139685298 -0.81242159058003\\
|
||||||
|
-0.981747704246811 -0.714551381103277\\
|
||||||
|
-0.957204011640641 -0.751649983982947\\
|
||||||
|
-0.908116626428299 -0.96939431010497\\
|
||||||
|
-0.88357293382213 -1.02782313519112\\
|
||||||
|
-0.859029241215961 -1.02764295098685\\
|
||||||
|
-0.834485548609788 -1.04303118195184\\
|
||||||
|
-0.809941856003618 -1.1135874216063\\
|
||||||
|
-0.785398163397449 -1.21428662741738\\
|
||||||
|
-0.760854470791276 -1.3250286832735\\
|
||||||
|
-0.736310778185107 -1.37763336808698\\
|
||||||
|
-0.711767085578938 -1.27527840883845\\
|
||||||
|
-0.687223392972768 -1.08192664495025\\
|
||||||
|
-0.662679700366596 -0.707175116884688\\
|
||||||
|
-0.638136007760426 -0.440848611322355\\
|
||||||
|
-0.613592315154257 -0.317627491607571\\
|
||||||
|
-0.589048622548088 -0.368550433609716\\
|
||||||
|
-0.564504929941915 -0.529567019701872\\
|
||||||
|
-0.539961237335746 -0.740023137301691\\
|
||||||
|
-0.515417544729576 -0.936949534039805\\
|
||||||
|
-0.490873852123404 -1.08380683423007\\
|
||||||
|
-0.466330159517234 -1.14951693986952\\
|
||||||
|
-0.441786466911065 -1.16653296678408\\
|
||||||
|
-0.417242774304896 -1.12681254908156\\
|
||||||
|
-0.392699081698723 -1.04344044810478\\
|
||||||
|
-0.368155389092554 -0.911358559656215\\
|
||||||
|
-0.343611696486384 -0.673593283068104\\
|
||||||
|
-0.319068003880215 -0.378671203309167\\
|
||||||
|
-0.294524311274042 -0.147237291038302\\
|
||||||
|
-0.269980618667873 -0.0687611272534738\\
|
||||||
|
-0.245436926061704 -0.0284356029270683\\
|
||||||
|
-0.220893233455531 -0.00158982689712062\\
|
||||||
|
-0.196349540849361 -3.5527136788005e-15\\
|
||||||
|
-0.171805848243192 -0.0290183239765689\\
|
||||||
|
-0.147262155637023 -0.0677220011932569\\
|
||||||
|
-0.12271846303085 -0.0755749861006834\\
|
||||||
|
-0.0736310778185114 -0.150623061280683\\
|
||||||
|
-0.0490873852123421 -0.150293248571142\\
|
||||||
|
-0.0245436926061693 -0.075910244951956\\
|
||||||
|
0 -0.129653251125745\\
|
||||||
|
0.0245436926061693 -0.0759102449519595\\
|
||||||
|
0.0490873852123421 -0.150293248571142\\
|
||||||
|
0.0736310778185114 -0.150623061280683\\
|
||||||
|
0.12271846303085 -0.0755749861006869\\
|
||||||
|
0.147262155637023 -0.0677220011932569\\
|
||||||
|
0.171805848243192 -0.0290183239765689\\
|
||||||
|
0.196349540849361 0\\
|
||||||
|
0.220893233455531 -0.00158982689712062\\
|
||||||
|
0.245436926061704 -0.0284356029270718\\
|
||||||
|
0.269980618667873 -0.0687611272534738\\
|
||||||
|
0.294524311274042 -0.147237291038305\\
|
||||||
|
0.319068003880215 -0.378671203309167\\
|
||||||
|
0.343611696486384 -0.673593283068108\\
|
||||||
|
0.368155389092554 -0.911358559656218\\
|
||||||
|
0.392699081698723 -1.04344044810479\\
|
||||||
|
0.417242774304896 -1.12681254908156\\
|
||||||
|
0.441786466911065 -1.16653296678408\\
|
||||||
|
0.466330159517234 -1.14951693986952\\
|
||||||
|
0.490873852123404 -1.08380683423007\\
|
||||||
|
0.515417544729576 -0.936949534039805\\
|
||||||
|
0.539961237335746 -0.740023137301687\\
|
||||||
|
0.564504929941915 -0.529567019701869\\
|
||||||
|
0.589048622548088 -0.36855043360972\\
|
||||||
|
0.613592315154257 -0.317627491607574\\
|
||||||
|
0.638136007760426 -0.440848611322359\\
|
||||||
|
0.662679700366596 -0.707175116884692\\
|
||||||
|
0.687223392972768 -1.08192664495025\\
|
||||||
|
0.711767085578938 -1.27527840883845\\
|
||||||
|
0.736310778185107 -1.37763336808698\\
|
||||||
|
0.760854470791276 -1.3250286832735\\
|
||||||
|
0.785398163397449 -1.21428662741738\\
|
||||||
|
0.809941856003618 -1.1135874216063\\
|
||||||
|
0.834485548609788 -1.04303118195183\\
|
||||||
|
0.859029241215961 -1.02764295098685\\
|
||||||
|
0.88357293382213 -1.02782313519112\\
|
||||||
|
0.908116626428299 -0.969394310104974\\
|
||||||
|
0.957204011640641 -0.751649983982947\\
|
||||||
|
0.981747704246811 -0.714551381103277\\
|
||||||
|
1.00629139685298 -0.81242159058003\\
|
||||||
|
1.03083508945915 -1.01656520978779\\
|
||||||
|
1.05537878206532 -1.40389512308032\\
|
||||||
|
1.07992247467149 -1.83098330554182\\
|
||||||
|
1.10446616727766 -1.9854246410849\\
|
||||||
|
1.12900985988383 -2.0104138728127\\
|
||||||
|
1.15355355249 -2.01822512349233\\
|
||||||
|
1.20264093770234 -1.80770510184558\\
|
||||||
|
1.22718463030851 -1.78495277610481\\
|
||||||
|
1.25172832291468 -1.82812211345248\\
|
||||||
|
1.27627201552085 -1.87464022701403\\
|
||||||
|
1.30081570812703 -1.86688379492939\\
|
||||||
|
1.32535940073319 -1.86783751695322\\
|
||||||
|
1.34990309333936 -1.98151785989441\\
|
||||||
|
1.37444678594553 -2.17497178218852\\
|
||||||
|
1.39899047855171 -2.3932489100494\\
|
||||||
|
1.42353417115788 -2.57991209356132\\
|
||||||
|
1.44807786376404 -2.80196796486164\\
|
||||||
|
1.47262155637021 -3.0096158207128\\
|
||||||
|
1.49716524897639 -3.18823276160444\\
|
||||||
|
1.52170894158256 -3.34829866588535\\
|
||||||
|
1.54625263418873 -3.44256929870861\\
|
||||||
|
1.5707963267949 -3.46769295384922\\
|
||||||
|
1.59534001940107 -3.40804148700824\\
|
||||||
|
1.61988371200724 -3.20868918272751\\
|
||||||
|
1.66897109721958 -2.43174036822529\\
|
||||||
|
1.69351478982575 -2.22382786445652\\
|
||||||
|
1.71805848243192 -2.21108638851551\\
|
||||||
|
1.74260217503809 -2.38358723758726\\
|
||||||
|
1.76714586764426 -2.66565529315556\\
|
||||||
|
1.79168956025043 -2.92004953531518\\
|
||||||
|
1.8162332528566 -3.14790250068943\\
|
||||||
|
1.84077694546277 -3.30855026424176\\
|
||||||
|
1.86532063806894 -3.36394467547953\\
|
||||||
|
1.88986433067511 -3.42557304147892\\
|
||||||
|
1.91440802328128 -3.42392975582495\\
|
||||||
|
1.93895171588745 -3.32783807306128\\
|
||||||
|
1.96349540849362 -3.11854439147683\\
|
||||||
|
1.98803910109979 -2.97187224999008\\
|
||||||
|
2.01258279370596 -3.15461107678053\\
|
||||||
|
2.03712648631213 -3.57844099840829\\
|
||||||
|
2.0616701789183 -4.11252781856745\\
|
||||||
|
2.08621387152447 -4.74443552790122\\
|
||||||
|
2.11075756413064 -5.1115797662322\\
|
||||||
|
2.13530125673681 -5.06102058647945\\
|
||||||
|
2.15984494934298 -4.87939584637504\\
|
||||||
|
2.18438864194915 -4.64227723733761\\
|
||||||
|
2.20893233455532 -4.38974561023634\\
|
||||||
|
2.23347602716149 -4.23783848068609\\
|
||||||
|
2.25801971976766 -4.24445427323096\\
|
||||||
|
2.28256341237383 -4.37497436709315\\
|
||||||
|
2.30710710498001 -4.65553527546583\\
|
||||||
|
2.33165079758617 -5.21147393956922\\
|
||||||
|
2.35619449019234 -6.05737033896411\\
|
||||||
|
2.38073818279852 -6.98988271739371\\
|
||||||
|
2.40528187540469 -7.71940845485185\\
|
||||||
|
2.42982556801086 -7.85202206428983\\
|
||||||
|
2.45436926061702 -7.30521855386077\\
|
||||||
|
2.4789129532232 -6.59545901902653\\
|
||||||
|
2.50345664582937 -6.19551569975192\\
|
||||||
|
2.52800033843554 -6.25353078740822\\
|
||||||
|
2.55254403104171 -6.68995050377788\\
|
||||||
|
2.60163141625405 -8.03921949291331\\
|
||||||
|
2.62617510886022 -8.52456927054182\\
|
||||||
|
2.67526249407256 -9.05870610750129\\
|
||||||
|
2.69980618667873 -9.37254772115121\\
|
||||||
|
2.7243498792849 -9.59587490688876\\
|
||||||
|
2.74889357189107 -9.63373286090274\\
|
||||||
|
2.77343726449724 -9.60018105054644\\
|
||||||
|
2.79798095710341 -9.76811722663992\\
|
||||||
|
2.82252464970958 -10.2283939034122\\
|
||||||
|
2.84706834231575 -10.9157197856076\\
|
||||||
|
2.87161203492192 -11.7799747002882\\
|
||||||
|
2.89615572752809 -12.7053120008311\\
|
||||||
|
2.92069942013426 -13.4872977067247\\
|
||||||
|
2.94524311274043 -14.2060001490953\\
|
||||||
|
2.9697868053466 -15.246186526982\\
|
||||||
|
3.01887419055894 -18.4109510569831\\
|
||||||
|
3.04341788316511 -20.3062518390902\\
|
||||||
|
3.06796157577128 -22.6467871973893\\
|
||||||
|
3.09250526837745 -25.6049717256354\\
|
||||||
|
3.11704896098362 -29.0319196411313\\
|
||||||
|
3.14159265358979 -30.3572678405229\\
|
||||||
|
};
|
||||||
|
\addlegendentry{DB Noise54.075}
|
||||||
|
|
||||||
|
\end{axis}
|
||||||
|
|
||||||
|
\begin{axis}[%
|
||||||
|
width=1.227\fwidth,
|
||||||
|
height=1.227\fheight,
|
||||||
|
at={(-0.16\fwidth,-0.135\fheight)},
|
||||||
|
scale only axis,
|
||||||
|
xmin=0,
|
||||||
|
xmax=1,
|
||||||
|
ymin=0,
|
||||||
|
ymax=1,
|
||||||
|
axis line style={draw=none},
|
||||||
|
ticks=none,
|
||||||
|
axis x line*=bottom,
|
||||||
|
axis y line*=left,
|
||||||
|
xmajorgrids,
|
||||||
|
ymajorgrids
|
||||||
|
]
|
||||||
|
\end{axis}
|
||||||
|
\end{tikzpicture}%
|
||||||
186
pam6_db.tex
Normal file
186
pam6_db.tex
Normal file
@@ -0,0 +1,186 @@
|
|||||||
|
% This file was created by matlab2tikz.
|
||||||
|
%
|
||||||
|
%The latest updates can be retrieved from
|
||||||
|
% http://www.mathworks.com/matlabcentral/fileexchange/22022-matlab2tikz-matlab2tikz
|
||||||
|
%where you can also make suggestions and rate matlab2tikz.
|
||||||
|
%
|
||||||
|
\definecolor{mycolor1}{rgb}{0.90471,0.19176,0.19882}%
|
||||||
|
\definecolor{mycolor2}{rgb}{0.29412,0.54471,0.74941}%
|
||||||
|
\definecolor{mycolor3}{rgb}{0.37176,0.71765,0.36118}%
|
||||||
|
\definecolor{mycolor4}{rgb}{1.00000,0.54824,0.10000}%
|
||||||
|
%
|
||||||
|
\begin{tikzpicture}
|
||||||
|
|
||||||
|
\begin{axis}[%
|
||||||
|
width=0.951\fwidth,
|
||||||
|
height=\fheight,
|
||||||
|
at={(0\fwidth,0\fheight)},
|
||||||
|
scale only axis,
|
||||||
|
xmin=15,
|
||||||
|
xmax=40,
|
||||||
|
xlabel style={font=\color{white!15!black}},
|
||||||
|
xlabel={Received Optical Power (dBm)},
|
||||||
|
ymode=log,
|
||||||
|
ymin=0.001,
|
||||||
|
ymax=1,
|
||||||
|
yminorticks=true,
|
||||||
|
ylabel style={font=\color{white!15!black}},
|
||||||
|
ylabel={Bit Error Rate (BER)},
|
||||||
|
axis background/.style={fill=white},
|
||||||
|
title style={font=\bfseries},
|
||||||
|
title={Bit Error Rate vs. ROP},
|
||||||
|
xmajorgrids,
|
||||||
|
xminorgrids,
|
||||||
|
ymajorgrids,
|
||||||
|
yminorgrids,
|
||||||
|
legend style={legend cell align=left, align=left, draw=white!15!black}
|
||||||
|
]
|
||||||
|
\addplot [color=mycolor1, mark size=2.5pt, mark=*, mark options={solid, mycolor1}]
|
||||||
|
table[row sep=crcr]{%
|
||||||
|
15 0.327010199014477\\
|
||||||
|
16 0.311702995808577\\
|
||||||
|
17 0.302976362038969\\
|
||||||
|
18 0.290172900555268\\
|
||||||
|
19 0.275210526133021\\
|
||||||
|
20 0.263951328094344\\
|
||||||
|
21 0.253598824873511\\
|
||||||
|
22 0.239834843333831\\
|
||||||
|
23 0.222991710913327\\
|
||||||
|
24 0.213765370578083\\
|
||||||
|
25 0.187866749545958\\
|
||||||
|
26 0.171604235178092\\
|
||||||
|
27 0.15502015841983\\
|
||||||
|
28 0.131515892335633\\
|
||||||
|
29 0.118871823008727\\
|
||||||
|
30 0.0915567300646945\\
|
||||||
|
31 0.0811198427608527\\
|
||||||
|
32 0.0718601655039258\\
|
||||||
|
33 0.0635054467668395\\
|
||||||
|
34 0.0547899253044598\\
|
||||||
|
35 0.029896620816824\\
|
||||||
|
36 0.0124562018828416\\
|
||||||
|
37 0.00786577721907566\\
|
||||||
|
38 0.00456715827050829\\
|
||||||
|
39 0.00261799013088214\\
|
||||||
|
40 0.00153766551260726\\
|
||||||
|
};
|
||||||
|
\addlegendentry{VNLE Lw: 0.5 MHz}
|
||||||
|
|
||||||
|
\addplot [color=mycolor2, mark size=2.5pt, mark=*, mark options={solid, mycolor2}]
|
||||||
|
table[row sep=crcr]{%
|
||||||
|
15 0\\
|
||||||
|
16 0\\
|
||||||
|
17 0\\
|
||||||
|
18 0\\
|
||||||
|
19 0\\
|
||||||
|
20 0\\
|
||||||
|
21 0\\
|
||||||
|
22 0\\
|
||||||
|
23 0\\
|
||||||
|
24 0\\
|
||||||
|
25 0\\
|
||||||
|
26 0\\
|
||||||
|
27 0\\
|
||||||
|
28 0\\
|
||||||
|
29 0\\
|
||||||
|
30 0\\
|
||||||
|
31 0\\
|
||||||
|
32 0\\
|
||||||
|
33 0\\
|
||||||
|
34 0\\
|
||||||
|
35 0\\
|
||||||
|
36 0\\
|
||||||
|
37 0\\
|
||||||
|
38 0\\
|
||||||
|
39 0\\
|
||||||
|
40 0\\
|
||||||
|
};
|
||||||
|
\addlegendentry{MLSE 1 Lw: 0.5 MHz}
|
||||||
|
|
||||||
|
\addplot [color=mycolor3, mark size=2.5pt, mark=*, mark options={solid, mycolor3}]
|
||||||
|
table[row sep=crcr]{%
|
||||||
|
15 0\\
|
||||||
|
16 0\\
|
||||||
|
17 0\\
|
||||||
|
18 0\\
|
||||||
|
19 0\\
|
||||||
|
20 0\\
|
||||||
|
21 0\\
|
||||||
|
22 0\\
|
||||||
|
23 0\\
|
||||||
|
24 0\\
|
||||||
|
25 0\\
|
||||||
|
26 0\\
|
||||||
|
27 0\\
|
||||||
|
28 0\\
|
||||||
|
29 0\\
|
||||||
|
30 0\\
|
||||||
|
31 0\\
|
||||||
|
32 0\\
|
||||||
|
33 0\\
|
||||||
|
34 0\\
|
||||||
|
35 0\\
|
||||||
|
36 0\\
|
||||||
|
37 0\\
|
||||||
|
38 0\\
|
||||||
|
39 0\\
|
||||||
|
40 0\\
|
||||||
|
};
|
||||||
|
\addlegendentry{MLSE 2Lw: 0.5 MHz}
|
||||||
|
|
||||||
|
\addplot [color=mycolor4, mark size=2.5pt, mark=*, mark options={solid, mycolor4}]
|
||||||
|
table[row sep=crcr]{%
|
||||||
|
15 0\\
|
||||||
|
16 0\\
|
||||||
|
17 0\\
|
||||||
|
18 0\\
|
||||||
|
19 0\\
|
||||||
|
20 0\\
|
||||||
|
21 0\\
|
||||||
|
22 0\\
|
||||||
|
23 0\\
|
||||||
|
24 0\\
|
||||||
|
25 0\\
|
||||||
|
26 0\\
|
||||||
|
27 0\\
|
||||||
|
28 0\\
|
||||||
|
29 0\\
|
||||||
|
30 0\\
|
||||||
|
31 0\\
|
||||||
|
32 0\\
|
||||||
|
33 0\\
|
||||||
|
34 0\\
|
||||||
|
35 0\\
|
||||||
|
36 0\\
|
||||||
|
37 0\\
|
||||||
|
38 0\\
|
||||||
|
39 0\\
|
||||||
|
40 0\\
|
||||||
|
};
|
||||||
|
\addlegendentry{MLSE 3Lw: 0.5 MHz}
|
||||||
|
|
||||||
|
\addplot [color=white!15!black, dashed, forget plot]
|
||||||
|
table[row sep=crcr]{%
|
||||||
|
15 0.0038\\
|
||||||
|
40 0.0038\\
|
||||||
|
};
|
||||||
|
\end{axis}
|
||||||
|
|
||||||
|
\begin{axis}[%
|
||||||
|
width=1.227\fwidth,
|
||||||
|
height=1.227\fheight,
|
||||||
|
at={(-0.16\fwidth,-0.135\fheight)},
|
||||||
|
scale only axis,
|
||||||
|
xmin=0,
|
||||||
|
xmax=1,
|
||||||
|
ymin=0,
|
||||||
|
ymax=1,
|
||||||
|
axis line style={draw=none},
|
||||||
|
ticks=none,
|
||||||
|
axis x line*=bottom,
|
||||||
|
axis y line*=left,
|
||||||
|
xmajorgrids,
|
||||||
|
ymajorgrids
|
||||||
|
]
|
||||||
|
\end{axis}
|
||||||
|
\end{tikzpicture}%
|
||||||
196
pam6_pf.tex
Normal file
196
pam6_pf.tex
Normal file
@@ -0,0 +1,196 @@
|
|||||||
|
% This file was created by matlab2tikz.
|
||||||
|
%
|
||||||
|
%The latest updates can be retrieved from
|
||||||
|
% http://www.mathworks.com/matlabcentral/fileexchange/22022-matlab2tikz-matlab2tikz
|
||||||
|
%where you can also make suggestions and rate matlab2tikz.
|
||||||
|
%
|
||||||
|
\definecolor{mycolor1}{rgb}{0.90471,0.19176,0.19882}%
|
||||||
|
\definecolor{mycolor2}{rgb}{0.29412,0.54471,0.74941}%
|
||||||
|
\definecolor{mycolor3}{rgb}{0.37176,0.71765,0.36118}%
|
||||||
|
\definecolor{mycolor4}{rgb}{1.00000,0.54824,0.10000}%
|
||||||
|
%
|
||||||
|
\begin{tikzpicture}
|
||||||
|
|
||||||
|
\begin{axis}[%
|
||||||
|
width=0.951\fwidth,
|
||||||
|
height=\fheight,
|
||||||
|
at={(0\fwidth,0\fheight)},
|
||||||
|
scale only axis,
|
||||||
|
xmin=15,
|
||||||
|
xmax=40,
|
||||||
|
xlabel style={font=\color{white!15!black}},
|
||||||
|
xlabel={Received Optical Power (dBm)},
|
||||||
|
ymode=log,
|
||||||
|
ymin=0.00059902281148318,
|
||||||
|
ymax=0.166016828200258,
|
||||||
|
yminorticks=true,
|
||||||
|
ylabel style={font=\color{white!15!black}},
|
||||||
|
ylabel={Bit Error Rate (BER)},
|
||||||
|
axis background/.style={fill=white},
|
||||||
|
title style={font=\bfseries},
|
||||||
|
title={Bit Error Rate vs. ROP},
|
||||||
|
xmajorgrids,
|
||||||
|
xminorgrids,
|
||||||
|
ymajorgrids,
|
||||||
|
yminorgrids,
|
||||||
|
legend style={legend cell align=left, align=left, draw=white!15!black}
|
||||||
|
]
|
||||||
|
\addplot [color=mycolor1, line width=2.0pt, mark size=2.5pt, mark=*, mark options={solid, mycolor1}]
|
||||||
|
table[row sep=crcr]{%
|
||||||
|
15 0.16008493969837\\
|
||||||
|
16 0.148018710347294\\
|
||||||
|
17 0.135397560154044\\
|
||||||
|
18 0.118006452083384\\
|
||||||
|
19 0.094911952328202\\
|
||||||
|
20 0.0850855474026718\\
|
||||||
|
21 0.0778479628015516\\
|
||||||
|
22 0.0688008084203508\\
|
||||||
|
23 0.0471981359104626\\
|
||||||
|
24 0.0323975844622164\\
|
||||||
|
25 0.0267066941233258\\
|
||||||
|
26 0.0216530251520129\\
|
||||||
|
27 0.0173115856220635\\
|
||||||
|
28 0.0136604981786234\\
|
||||||
|
29 0.010617115036688\\
|
||||||
|
30 0.00803767072150127\\
|
||||||
|
31 0.00594925148193035\\
|
||||||
|
32 0.00430393549305654\\
|
||||||
|
33 0.00307915088082398\\
|
||||||
|
34 0.0022804537988464\\
|
||||||
|
35 0.00167379127614431\\
|
||||||
|
36 0.00127305369675208\\
|
||||||
|
37 0.00100184394848057\\
|
||||||
|
38 0.000819185398428303\\
|
||||||
|
39 0.000686879490500714\\
|
||||||
|
40 0.00059902281148318\\
|
||||||
|
};
|
||||||
|
\addlegendentry{VNLE Lw: 0.5 MHz}
|
||||||
|
|
||||||
|
\addplot [color=mycolor2, line width=2.0pt, mark size=2.5pt, mark=*, mark options={solid, mycolor2}]
|
||||||
|
table[row sep=crcr]{%
|
||||||
|
15 0.166016828200258\\
|
||||||
|
16 0.153631814535592\\
|
||||||
|
17 0.139560160989551\\
|
||||||
|
18 0.1207188968257\\
|
||||||
|
19 0.0955255600429213\\
|
||||||
|
20 0.0862474780271488\\
|
||||||
|
21 0.0794370227350861\\
|
||||||
|
22 0.0710753588059826\\
|
||||||
|
23 0.0479850261660109\\
|
||||||
|
24 0.0336824449853977\\
|
||||||
|
25 0.0294278203556633\\
|
||||||
|
26 0.0260795432841729\\
|
||||||
|
27 0.0232222912882984\\
|
||||||
|
28 0.0207911268226788\\
|
||||||
|
29 0.0185690126367769\\
|
||||||
|
30 0.016517750174498\\
|
||||||
|
31 0.0147147783268338\\
|
||||||
|
32 0.0131875306022523\\
|
||||||
|
33 0.0116262514367866\\
|
||||||
|
34 0.0100031600623678\\
|
||||||
|
35 0.00841236383082901\\
|
||||||
|
36 0.00697852893887884\\
|
||||||
|
37 0.00572492177977491\\
|
||||||
|
38 0.00470189499564189\\
|
||||||
|
39 0.00391639377849699\\
|
||||||
|
40 0.00331771822661467\\
|
||||||
|
};
|
||||||
|
\addlegendentry{MLSE 1 Lw: 0.5 MHz}
|
||||||
|
|
||||||
|
\addplot [color=mycolor3, line width=2.0pt, mark size=2.5pt, mark=*, mark options={solid, mycolor3}]
|
||||||
|
table[row sep=crcr]{%
|
||||||
|
15 0.163486347488792\\
|
||||||
|
16 0.149813695224139\\
|
||||||
|
17 0.13425299250961\\
|
||||||
|
18 0.112261041987158\\
|
||||||
|
19 0.082994350086294\\
|
||||||
|
20 0.0737412707617834\\
|
||||||
|
21 0.0671634794022968\\
|
||||||
|
22 0.0587726456667211\\
|
||||||
|
23 0.0332261458698679\\
|
||||||
|
24 0.018219322218711\\
|
||||||
|
25 0.0151498946067111\\
|
||||||
|
26 0.0126402494712973\\
|
||||||
|
27 0.0107778962318861\\
|
||||||
|
28 0.00934718667634363\\
|
||||||
|
29 0.00803975427910643\\
|
||||||
|
30 0.00699832273612785\\
|
||||||
|
31 0.00608711354347169\\
|
||||||
|
32 0.00526619184703909\\
|
||||||
|
33 0.00455535144407905\\
|
||||||
|
34 0.00383096791668548\\
|
||||||
|
35 0.00322361087478166\\
|
||||||
|
36 0.00270202695429022\\
|
||||||
|
37 0.00228288461605242\\
|
||||||
|
38 0.00194291746681066\\
|
||||||
|
39 0.001689417958183\\
|
||||||
|
40 0.00148696561088173\\
|
||||||
|
};
|
||||||
|
\addlegendentry{MLSE 2Lw: 0.5 MHz}
|
||||||
|
|
||||||
|
\addplot [color=mycolor4, line width=2.0pt, mark size=2.5pt, mark=*, mark options={solid, mycolor4}]
|
||||||
|
table[row sep=crcr]{%
|
||||||
|
15 0.162657786081141\\
|
||||||
|
16 0.149052154919453\\
|
||||||
|
17 0.132976813476451\\
|
||||||
|
18 0.110511548118027\\
|
||||||
|
19 0.0810816442047581\\
|
||||||
|
20 0.0724869690834777\\
|
||||||
|
21 0.0664040226552164\\
|
||||||
|
22 0.0584625428431533\\
|
||||||
|
23 0.0322850723515378\\
|
||||||
|
24 0.0174209723963343\\
|
||||||
|
25 0.0144234275217124\\
|
||||||
|
26 0.0121558223280978\\
|
||||||
|
27 0.0104094537953738\\
|
||||||
|
28 0.0090009688542864\\
|
||||||
|
29 0.00785779024825589\\
|
||||||
|
30 0.00695804062242811\\
|
||||||
|
31 0.00612739565717143\\
|
||||||
|
32 0.00542141688862343\\
|
||||||
|
33 0.00476127638738892\\
|
||||||
|
34 0.00410460848216301\\
|
||||||
|
35 0.0034833610562248\\
|
||||||
|
36 0.00294163607888349\\
|
||||||
|
37 0.00248498970375283\\
|
||||||
|
38 0.00212522875726207\\
|
||||||
|
39 0.00179637391524782\\
|
||||||
|
40 0.00153523469540124\\
|
||||||
|
};
|
||||||
|
\addlegendentry{MLSE 3Lw: 0.5 MHz}
|
||||||
|
|
||||||
|
\addplot [color=white!15!black, dashed, forget plot]
|
||||||
|
table[row sep=crcr]{%
|
||||||
|
15 0.0038\\
|
||||||
|
40 0.0038\\
|
||||||
|
};
|
||||||
|
\addplot [color=white!15!black, dashed, forget plot]
|
||||||
|
table[row sep=crcr]{%
|
||||||
|
15 0.0038\\
|
||||||
|
40 0.0038\\
|
||||||
|
};
|
||||||
|
\addplot [color=white!15!black, dashed, forget plot]
|
||||||
|
table[row sep=crcr]{%
|
||||||
|
15 0.0038\\
|
||||||
|
40 0.0038\\
|
||||||
|
};
|
||||||
|
\end{axis}
|
||||||
|
|
||||||
|
\begin{axis}[%
|
||||||
|
width=1.227\fwidth,
|
||||||
|
height=1.227\fheight,
|
||||||
|
at={(-0.16\fwidth,-0.135\fheight)},
|
||||||
|
scale only axis,
|
||||||
|
xmin=0,
|
||||||
|
xmax=1,
|
||||||
|
ymin=0,
|
||||||
|
ymax=1,
|
||||||
|
axis line style={draw=none},
|
||||||
|
ticks=none,
|
||||||
|
axis x line*=bottom,
|
||||||
|
axis y line*=left,
|
||||||
|
xmajorgrids,
|
||||||
|
ymajorgrids
|
||||||
|
]
|
||||||
|
\end{axis}
|
||||||
|
\end{tikzpicture}%
|
||||||
@@ -1,5 +1,10 @@
|
|||||||
|
|
||||||
if 0
|
% cleanup measurement data
|
||||||
|
% remove fots from files
|
||||||
|
% merge measurments into database
|
||||||
|
|
||||||
|
|
||||||
|
if 1
|
||||||
|
|
||||||
folderPath = "/Volumes/NT-Labor/2024/sioe/High Speed Messungen Oktober/mpi_measurement";
|
folderPath = "/Volumes/NT-Labor/2024/sioe/High Speed Messungen Oktober/mpi_measurement";
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,475 @@
|
|||||||
|
% Connect to SQLite database
|
||||||
|
pathToDB = 'C:\Users\Silas\Documents\MATLAB\Datensätze\sioe_labor\silas_labor.db'; % Update the path as needed
|
||||||
|
db = DBHandler("pathToDB",pathToDB);
|
||||||
|
|
||||||
|
% main file path
|
||||||
|
sioe_labor_path = 'C:\Users\Silas\Documents\MATLAB\Datensätze\sioe_labor';
|
||||||
|
|
||||||
|
% Get list of all folders (including subfolders) within sioe_labor_path
|
||||||
|
folderList = dir(fullfile(sioe_labor_path, '**', '*'));
|
||||||
|
|
||||||
|
% Filter to include only directories and exclude '.' and '..'
|
||||||
|
folderNames = {folderList([folderList.isdir]).name};
|
||||||
|
folderPaths = {folderList([folderList.isdir]).folder}; % Get the full paths
|
||||||
|
folderPaths = folderPaths(~ismember(folderNames, {'.', '..'}));
|
||||||
|
folderNames = folderNames(~ismember(folderNames, {'.', '..'}));
|
||||||
|
|
||||||
|
|
||||||
|
% Combine folder names with paths
|
||||||
|
fullFolderPaths = flip(fullfile(folderPaths, folderNames));
|
||||||
|
only_mpi=0;
|
||||||
|
|
||||||
|
if only_mpi
|
||||||
|
fullFolderPaths = fullFolderPaths(contains(fullFolderPaths,"mpi"));
|
||||||
|
end
|
||||||
|
|
||||||
|
relativeFolderPaths = strrep(fullFolderPaths, sioe_labor_path, '');
|
||||||
|
|
||||||
|
disp(['Start to process ',num2str(numel(relativeFolderPaths)), ' folder in the directory']);
|
||||||
|
|
||||||
|
for f = 1:numel(fullFolderPaths)
|
||||||
|
folder = fullFolderPaths{f};
|
||||||
|
relfolder = relativeFolderPaths{f};
|
||||||
|
|
||||||
|
|
||||||
|
% Get list of all files in the specified folder and subfolders
|
||||||
|
fileList = dir(folder);
|
||||||
|
|
||||||
|
if isempty(fileList(~[fileList.isdir]))
|
||||||
|
continue
|
||||||
|
end
|
||||||
|
|
||||||
|
matches = regexp(folder, '\d+km', 'match');
|
||||||
|
|
||||||
|
% Check if a match was found
|
||||||
|
if ~isempty(matches)
|
||||||
|
|
||||||
|
length_from_foldername_km = matches{1}; % Extract the first match
|
||||||
|
length_from_foldername_km = strrep(length_from_foldername_km,'km','');
|
||||||
|
disp(['The length is: ', length_from_foldername_km]);
|
||||||
|
else
|
||||||
|
disp('No length information found in the folder name.');
|
||||||
|
end
|
||||||
|
|
||||||
|
% Loop through each file and rename if necessary
|
||||||
|
for i = 1:length(fileList)
|
||||||
|
oldName = fileList(i).name;
|
||||||
|
|
||||||
|
% Use regex to find and remove any prefix before the date string
|
||||||
|
newName = regexprep(oldName, '^[^\d]*(\d{8}_\d{6}.*)', '$1');
|
||||||
|
|
||||||
|
% Insert an underscore before "PAM" if missing
|
||||||
|
newName = regexprep(newName, '(\d{8}_\d{6})(PAM)', '$1_PAM');
|
||||||
|
|
||||||
|
% Rename the file only if a change was made
|
||||||
|
if ~strcmp(oldName, newName)
|
||||||
|
movefile(fullfile(fileList(i).folder, oldName), fullfile(fileList(i).folder, newName));
|
||||||
|
fprintf('Renamed: %s -> %s\n', oldName, newName);
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
% Get new list of all files in the specified folder and subfolders, we
|
||||||
|
% renamed files so we need to get the new filenames here to work on :-)
|
||||||
|
fileList = dir(folder);
|
||||||
|
|
||||||
|
% Initialize lists to store DataStorage objects based on size
|
||||||
|
big_wh_list = {}; % For large DataStorage objects
|
||||||
|
big_wh_filename = {}; % Corresponding filenames for large objects
|
||||||
|
small_wh_list = {}; % For small DataStorage objects
|
||||||
|
small_wh_filename = {}; % Corresponding filenames for small objects
|
||||||
|
|
||||||
|
% Loop through each file and categorize based on the presence of 'wh' in the filename
|
||||||
|
for i = 1:length(fileList)
|
||||||
|
fileName = fileList(i).name;
|
||||||
|
if contains(fileName, 'wh')
|
||||||
|
% Load DataStorage object from file
|
||||||
|
wh = load(fullfile(fileList(i).folder, fileName));
|
||||||
|
wh = wh.obj;
|
||||||
|
|
||||||
|
% Classify as big or small based on dimensions
|
||||||
|
if isa(wh, 'DataStorage')
|
||||||
|
if prod(wh.dim) > 2
|
||||||
|
big_wh_list{end+1} = wh;
|
||||||
|
big_wh_filename{end+1} = fileName;
|
||||||
|
else
|
||||||
|
small_wh_list{end+1} = wh;
|
||||||
|
small_wh_filename{end+1} = fileName;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
% Aggregate unique parameters across all large DataStorage objects
|
||||||
|
params_merge = struct;
|
||||||
|
for c = 1:numel(big_wh_list)
|
||||||
|
fnames = fieldnames(big_wh_list{c}.parameter);
|
||||||
|
for f = 1:numel(fnames)
|
||||||
|
% Initialize field if not already present
|
||||||
|
if ~isfield(params_merge, fnames{f})
|
||||||
|
params_merge.(fnames{f}) = [];
|
||||||
|
end
|
||||||
|
|
||||||
|
% Merge unique parameter values into params_merge
|
||||||
|
a = big_wh_list{c}.parameter.(fnames{f}).values;
|
||||||
|
b = params_merge.(fnames{f});
|
||||||
|
vals_to_add = setdiff(a, b); % New values in a that aren't in b
|
||||||
|
b = sort([b, vals_to_add]); % Combine and sort values
|
||||||
|
params_merge.(fnames{f}) = b;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
% Process each large DataStorage object
|
||||||
|
for w = 1:numel(big_wh_list)
|
||||||
|
wh = big_wh_list{w};
|
||||||
|
% Extract date and time for filename generation
|
||||||
|
datebody = regexp(big_wh_filename{w}, '^\d{8}_\d{6}', 'match', 'once');
|
||||||
|
|
||||||
|
% Get the total number of linear indices
|
||||||
|
totalIndices = wh.getLastLinIndice;
|
||||||
|
|
||||||
|
% Initialize the waitbar
|
||||||
|
h = waitbar(0, 'Processing DataStorage...');
|
||||||
|
|
||||||
|
% Loop over each linear index in DataStorage
|
||||||
|
for i = 1:wh.getLastLinIndice
|
||||||
|
% Update the waitbar with the current progress
|
||||||
|
waitbar(i / totalIndices, h, sprintf('Folder: %s...\n %d of %d', string(strrep(strrep(relfolder, '\', '/'),'_',' ')), i, totalIndices));
|
||||||
|
|
||||||
|
% Initialize record struct for each entry and flag for non-empty data
|
||||||
|
measurementStruct = struct();
|
||||||
|
recordIsFilled = false;
|
||||||
|
|
||||||
|
% Loop over each storage within DataStorage and gather data
|
||||||
|
storage_names = fieldnames(wh.sto);
|
||||||
|
for s = 1:length(storage_names)
|
||||||
|
% Retrieve physical values, parameter names, and stored value
|
||||||
|
[configStruct, stored_value] = wh.getPhysAndValueByLinIndex(storage_names{s}, i);
|
||||||
|
measurementStruct.(storage_names{s}) = stored_value;
|
||||||
|
if ~isempty(stored_value)
|
||||||
|
recordIsFilled = true; % Mark as filled if value is present
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
[configStruct.precomp_amp_max,configStruct.v_bias_for_pam] = getBias(configStruct.duobinary,configStruct.M);
|
||||||
|
|
||||||
|
isMPI = isfield(measurementStruct,'i_power');
|
||||||
|
|
||||||
|
% Process record if it contains data
|
||||||
|
if recordIsFilled
|
||||||
|
|
||||||
|
if ~isMPI
|
||||||
|
|
||||||
|
% Generate filenames with conditionally formatted parameters
|
||||||
|
% Format the L parameter value (show decimal only if non-zero)
|
||||||
|
if configStruct.lambda == floor(configStruct.lambda)
|
||||||
|
L_str = sprintf('%.0f',configStruct.lambda); % No decimal part
|
||||||
|
else
|
||||||
|
L_str = sprintf('%.1f', configStruct.lambda); % Include one decimal place
|
||||||
|
end
|
||||||
|
|
||||||
|
% Synthesize filename base with placeholders for storage types
|
||||||
|
fbody_tx = sprintf('%s_PAM_%d_L_%s_R_%d_DB_%d_ROP_%d', datebody, ...
|
||||||
|
configStruct.M, L_str, configStruct.bitrate, configStruct.duobinary, 0);
|
||||||
|
fbody_tx = strrep(fbody_tx, '.', '_'); % Replace decimal point with underscore
|
||||||
|
|
||||||
|
fbody_rx = sprintf('%s_PAM_%d_L_%s_R_%d_DB_%d_ROP_%d', datebody, ...
|
||||||
|
configStruct.M, L_str, configStruct.bitrate, configStruct.duobinary, configStruct.rop_atten);
|
||||||
|
fbody_rx = strrep(fbody_rx, '.', '_');
|
||||||
|
|
||||||
|
elseif isMPI
|
||||||
|
|
||||||
|
fbody_tx = sprintf('%s_PAM_%d_R_%d_DB_%d_I_atten_%d', datebody, ...
|
||||||
|
configStruct.M, configStruct.bitrate, configStruct.duobinary, 0);
|
||||||
|
fbody_tx = strrep(fbody_tx, '.', '_'); % Replace decimal point with underscore
|
||||||
|
|
||||||
|
fbody_rx = sprintf('%s_PAM_%d_R_%d_DB_%d_I_atten_%d', datebody, ...
|
||||||
|
configStruct.M, configStruct.bitrate, configStruct.duobinary, configStruct.interference_atten);
|
||||||
|
fbody_rx = strrep(fbody_rx, '.', '_'); % Replace decimal point with underscore
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
% Check existence of different file types (bits, symbols, raw signal, rx signal)
|
||||||
|
% BIT SEQUENCE
|
||||||
|
fn_bits = [filesep, fbody_tx, '_bits.mat'];
|
||||||
|
fp_bits = fullfile([folder, fn_bits]);
|
||||||
|
if exist(fp_bits, "file") == 2
|
||||||
|
fn_bits_rel = [relfolder, fn_bits];
|
||||||
|
else
|
||||||
|
warning(['Bits not found at: ', fn_bits]);
|
||||||
|
end
|
||||||
|
|
||||||
|
% SYMBOL SEQUENCE
|
||||||
|
fn_symbols = [filesep, fbody_tx, '_symbols.mat'];
|
||||||
|
fp_symbols = fullfile([folder, fn_symbols]);
|
||||||
|
if exist(fp_symbols, "file") == 2
|
||||||
|
fn_symbols_rel = [relfolder, fn_symbols];
|
||||||
|
else
|
||||||
|
warning(['Symbols not found at: ', fn_symbols]);
|
||||||
|
end
|
||||||
|
|
||||||
|
% RAW RX SIGNAL
|
||||||
|
fn_rxraw = [filesep, fbody_rx, '_raw_signal.mat'];
|
||||||
|
fp_rxraw = fullfile([folder, fn_rxraw]);
|
||||||
|
missing_raw_flag = 1; % Initialize as missing
|
||||||
|
|
||||||
|
if exist(fp_rxraw, "file") == 2
|
||||||
|
fn_rxraw_rel = [relfolder, fn_rxraw];
|
||||||
|
missing_raw_flag = 0;
|
||||||
|
end
|
||||||
|
|
||||||
|
% SYNCHRONIZED RX SIGNAL
|
||||||
|
fn_rxtsynch = [filesep, fbody_rx, '_rx_signal.mat'];
|
||||||
|
fp_rxtsynch = fullfile([folder, fn_rxtsynch]);
|
||||||
|
if exist(fp_rxtsynch, "file") == 2
|
||||||
|
fn_rxtsynch_rel = [relfolder, fn_rxtsynch];
|
||||||
|
|
||||||
|
matObj = matfile([folder, fn_rxtsynch]);
|
||||||
|
|
||||||
|
% If RX signal actually contains raw signal, handle as necessary
|
||||||
|
if isprop(matObj, 'Scpe_sig_raw')
|
||||||
|
sig_rx = load([folder, fn_rxtsynch]);
|
||||||
|
if missing_raw_flag
|
||||||
|
% Save as raw signal if original raw signal is missing
|
||||||
|
Scpe_sig_raw = sig_rx.Scpe_sig_raw;
|
||||||
|
save([folder, fn_rxraw], "Scpe_sig_raw");
|
||||||
|
delete([folder, fn_rxtsynch]);
|
||||||
|
else
|
||||||
|
% Check if raw and rx signal files are identical, then delete duplicate
|
||||||
|
sig_raw = load([folder, fn_rxraw]);
|
||||||
|
if isequal(sig_raw, sig_rx)
|
||||||
|
delete([folder, fn_rxtsynch]);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
elseif missing_raw_flag
|
||||||
|
warning(['RX Signal not found at: ', fn_rxtsynch]);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
% Call the duplicate check function
|
||||||
|
exists = db.checkIfRunExists('Runs', 'rx_sync_path', fn_rxtsynch_rel);
|
||||||
|
|
||||||
|
if ~exists
|
||||||
|
|
||||||
|
% Table 1: Append to Runs
|
||||||
|
newRun = db.tables.Runs; % Get the existing table structure (an empty table)
|
||||||
|
newRun = struct(...
|
||||||
|
'run_id', NaN, ... % Auto-increment, leave empty
|
||||||
|
'date_of_run', datetime(datebody, 'InputFormat', 'yyyyMMdd_HHmmss'), ...
|
||||||
|
'tx_bits_path', fn_bits_rel, ...
|
||||||
|
'tx_symbols_path', fn_symbols_rel, ...
|
||||||
|
'rx_sync_path', fn_rxtsynch_rel, ...
|
||||||
|
'rx_raw_path', fn_rxraw_rel, ...
|
||||||
|
'filename', fbody_rx ...
|
||||||
|
);
|
||||||
|
|
||||||
|
% Append the new row to the Runs table and get the generated run ID
|
||||||
|
run_id = db.appendToTable('Runs', newRun);
|
||||||
|
|
||||||
|
if isMPI
|
||||||
|
|
||||||
|
assert(configStruct.interference_atten==measurementStruct.voa.value(4),'MPI attuation differs between voa state and desired config from simulation loop.');
|
||||||
|
interference_attenuation = configStruct.interference_atten;
|
||||||
|
interference_path_length = 2;
|
||||||
|
power_mpi_interference = measurementStruct.voa.power_state(4);
|
||||||
|
power_mpi_signal = measurementStruct.voa.power_state(3);
|
||||||
|
|
||||||
|
rop_attenuation = 0;
|
||||||
|
wavelength = 1310;
|
||||||
|
fiber_length = 1;
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
interference_attenuation = NaN;
|
||||||
|
interference_path_length = NaN;
|
||||||
|
power_mpi_interference = NaN;
|
||||||
|
power_mpi_signal = NaN;
|
||||||
|
|
||||||
|
rop_attenuation = configStruct.rop_atten;
|
||||||
|
wavelength = configStruct.lambda;
|
||||||
|
fiber_length = str2double(length_from_foldername_km);
|
||||||
|
|
||||||
|
end
|
||||||
|
% Table 2: Append to Configurations
|
||||||
|
newConfig = db.tables.Configurations; % Get the existing table structure (an empty table)
|
||||||
|
newConfig = struct(...
|
||||||
|
'configuration_id', NaN, ... % Auto-increment, leave empty
|
||||||
|
'run_id', run_id, ... % Foreign key from Runs
|
||||||
|
'unique_elab_id', "20241028-dea635ef776cd18270922ba0e52c65831ff7699f", ... % Set unique_elab_id as needed
|
||||||
|
'bitrate', configStruct.bitrate, ...
|
||||||
|
'symbolrate', floor(configStruct.bitrate * 1e-9 / log2(configStruct.M)) * 1e9, ... % Calculate symbolrate if available
|
||||||
|
'pam_level', configStruct.M, ...
|
||||||
|
'db_mode', configStruct.duobinary, ... % Assuming db_mode corresponds to duobinary mode
|
||||||
|
'v_bias', configStruct.v_bias_for_pam, ...
|
||||||
|
'v_awg', 2.7, ...
|
||||||
|
'precomp_amp', configStruct.precomp_amp_max, ...
|
||||||
|
'rop_attenuation', rop_attenuation, ...
|
||||||
|
'wavelength', wavelength, ...
|
||||||
|
'fiber_length', fiber_length, ...
|
||||||
|
'is_mpi', isMPI, ... % Set false for no MPI, change as needed
|
||||||
|
'interference_path_length', interference_path_length, ... % Set NaN if not applicable
|
||||||
|
'interference_attenuation', interference_attenuation ... % Set NaN if not applicable
|
||||||
|
);
|
||||||
|
|
||||||
|
% Append the new row to the Configurations table
|
||||||
|
db.appendToTable('Configurations', newConfig);
|
||||||
|
|
||||||
|
% Table 3: Append to Measurements
|
||||||
|
newMeas = db.tables.Measurements; % Get the existing table structure (an empty table)
|
||||||
|
newMeas = struct(...
|
||||||
|
'measurement_id', NaN, ... % Auto-increment, leave empty
|
||||||
|
'run_id', run_id, ... % Foreign key from Runs
|
||||||
|
'power_laser', measurementStruct.exfo.cur_power, ...
|
||||||
|
'power_rop', measurementStruct.rop, ...
|
||||||
|
'power_pd_in', measurementStruct.pd_in, ...
|
||||||
|
'power_mpi_interference', power_mpi_interference, ...
|
||||||
|
'power_mpi_signal', power_mpi_signal, ...
|
||||||
|
'voa_class', measurementStruct.voa, ...
|
||||||
|
'pdfa_class', measurementStruct.pdfa, ...
|
||||||
|
'laser_class', measurementStruct.exfo ...
|
||||||
|
);
|
||||||
|
|
||||||
|
% Append the new row to the Measurements table
|
||||||
|
db.appendToTable('Measurements', newMeas);
|
||||||
|
|
||||||
|
% Table 4: Append to Bers
|
||||||
|
[ber, structure, settings] = getBers(configStruct,measurementStruct);
|
||||||
|
for t = 1:numel(ber)
|
||||||
|
|
||||||
|
if iscell(ber(t))
|
||||||
|
ber_ = ber(t);
|
||||||
|
ber_ = ber_{1};
|
||||||
|
else
|
||||||
|
ber_ = ber(t);
|
||||||
|
end
|
||||||
|
|
||||||
|
if ber_~=-1
|
||||||
|
|
||||||
|
newBer = struct(...
|
||||||
|
'ber_id', NaN,...
|
||||||
|
'run_id', run_id,...
|
||||||
|
'processing_structure', structure(t),...
|
||||||
|
'processing_settings', settings(t),...
|
||||||
|
'ber', jsonencode(ber_)...
|
||||||
|
);
|
||||||
|
db.appendToTable('BERs', newBer);
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function [ber, structure, settings] = getBers(configStruct,measurementStruct)
|
||||||
|
|
||||||
|
if configStruct.duobinary == 0
|
||||||
|
|
||||||
|
structure(1) = "vnle";
|
||||||
|
settings(1) = EQ("Ne",[50,7,7],"Nb",[0,0,0],"training_length",4096*2,"training_loops",5,"dd_loops",5,"K",2,"DCmu",0.0,"DDmu",[0.0004 0.0004 0.0004 0.0004 ],"DFEmu",0.005,"FFEmu",0,"plotfinal",0,"ideal_dfe",1);
|
||||||
|
ber(1) = measurementStruct.ber_vnle;
|
||||||
|
|
||||||
|
structure(2) = "vnle -> remove DC from error ""Noi{s}.signal = Noi{s}.signal - mean(Noi{s}.signal);"" -> burg(error) -> pf -> mlse";
|
||||||
|
settings(2) = EQ("Ne",[50,7,7],"Nb",[0,0,0],"training_length",4096*2,"training_loops",5,"dd_loops",5,"K",2,"DCmu",0.0,"DDmu",[0.0004 0.0004 0.0004 0.0004 ],"DFEmu",0.005,"FFEmu",0,"plotfinal",0,"ideal_dfe",1);
|
||||||
|
ber(2) = measurementStruct.ber_vnle_mlse;
|
||||||
|
|
||||||
|
elseif configStruct.duobinary == 1
|
||||||
|
|
||||||
|
structure(1) = "tx: duobinary precode; rx: db target -> mlse -> modulo";
|
||||||
|
settings(1) = EQ("Ne",[50,7,7],"Nb",[0,0,0],"training_length",4096*2,"training_loops",5,"dd_loops",5,"K",2,"DCmu",0.0,"DDmu",[0.0004 0.0004 0.0004 0.0004 ],"DFEmu",0.005,"FFEmu",0,"plotfinal",0,"ideal_dfe",1);
|
||||||
|
ber(1) = measurementStruct.ber_db;
|
||||||
|
|
||||||
|
elseif configStruct.duobinary == 2
|
||||||
|
|
||||||
|
structure(1) = "tx: duobinary precode -> encode; rx: db target -> mlse as decoder -> modulo";
|
||||||
|
settings(1) = EQ("Ne",[50,7,7],"Nb",[0,0,0],"training_length",4096*2,"training_loops",5,"dd_loops",5,"K",2,"DCmu",0.0,"DDmu",[0.0004 0.0004 0.0004 0.0004 ],"DFEmu",0.005,"FFEmu",0,"plotfinal",0,"ideal_dfe",1);
|
||||||
|
ber(1) = measurementStruct.ber_db;
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
function [precomp_amp_max,v_bias_for_pam] = getBias(db,M)
|
||||||
|
|
||||||
|
if db == 1
|
||||||
|
ffe_only = 0;
|
||||||
|
postfilter_approach = 0;
|
||||||
|
db_channel_approach = 1;
|
||||||
|
db_coding_approach = 0;
|
||||||
|
db_precode = db_coding_approach || db_channel_approach;
|
||||||
|
if M == 4
|
||||||
|
pulsef=1;
|
||||||
|
precomp_amp_max = -50;
|
||||||
|
v_bias_for_pam = 2.3;
|
||||||
|
pulsef = 1;
|
||||||
|
elseif M == 6
|
||||||
|
pulsef=0;
|
||||||
|
precomp_amp_max = -50;
|
||||||
|
v_bias_for_pam = 2.3;
|
||||||
|
pulsef = 1;
|
||||||
|
elseif M == 8
|
||||||
|
pulsef=0;
|
||||||
|
precomp_amp_max = -50;
|
||||||
|
v_bias_for_pam=2.6;
|
||||||
|
pulsef = 0;
|
||||||
|
end
|
||||||
|
|
||||||
|
elseif db == 2
|
||||||
|
|
||||||
|
ffe_only = 0;
|
||||||
|
postfilter_approach = 0;
|
||||||
|
db_channel_approach = 0;
|
||||||
|
db_coding_approach = 1;
|
||||||
|
db_precode = db_coding_approach || db_channel_approach;
|
||||||
|
if M == 4
|
||||||
|
pulsef=1;
|
||||||
|
precomp_amp_max = -38;
|
||||||
|
v_bias_for_pam = 2.8;
|
||||||
|
pulsef = 1;
|
||||||
|
elseif M == 6
|
||||||
|
pulsef=0;
|
||||||
|
precomp_amp_max = -38;
|
||||||
|
v_bias_for_pam = 2.8;
|
||||||
|
pulsef = 1;
|
||||||
|
elseif M == 8
|
||||||
|
pulsef=0;
|
||||||
|
precomp_amp_max = -38;
|
||||||
|
v_bias_for_pam = 2.8;
|
||||||
|
pulsef = 1;
|
||||||
|
end
|
||||||
|
|
||||||
|
elseif db == 0
|
||||||
|
|
||||||
|
ffe_only = 0;
|
||||||
|
postfilter_approach = 1;
|
||||||
|
db_channel_approach = 0;
|
||||||
|
db_coding_approach = 0;
|
||||||
|
db_precode = db_coding_approach || db_channel_approach;
|
||||||
|
if M == 4
|
||||||
|
pulsef=1;
|
||||||
|
precomp_amp_max = -37;
|
||||||
|
v_bias_for_pam = 2.3;
|
||||||
|
pulsef = 1;
|
||||||
|
elseif M == 6
|
||||||
|
pulsef=0;
|
||||||
|
precomp_amp_max = -34;
|
||||||
|
v_bias_for_pam = 2.3;
|
||||||
|
pulsef = 1;
|
||||||
|
elseif M == 8
|
||||||
|
pulsef=0;
|
||||||
|
precomp_amp_max = -34;
|
||||||
|
v_bias_for_pam=2.6;
|
||||||
|
pulsef = 0;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
28
projects/HighSpeedExperiment_2024/auswertung/checkDB.m
Normal file
28
projects/HighSpeedExperiment_2024/auswertung/checkDB.m
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
function checkDB(db_path)
|
||||||
|
|
||||||
|
db = DBHandler("pathToDB",db_path);
|
||||||
|
|
||||||
|
num_runs = db.fetch('SELECT COUNT(*) AS total_runs FROM Runs');
|
||||||
|
|
||||||
|
num_configs = db.fetch('SELECT COUNT(*) AS total_configurations FROM Configurations');
|
||||||
|
|
||||||
|
num_meas = db.fetch('SELECT COUNT(*) AS total_measurements FROM Measurements');
|
||||||
|
|
||||||
|
assert((num_runs{1,1}==num_configs{1,1})&&(num_configs{1,1}==num_meas{1,1}),'Different num of entries per table')
|
||||||
|
|
||||||
|
% should not be possible, but check if anyconfig or meas is without
|
||||||
|
% parent Run entry
|
||||||
|
unmatchedConfigs = db.fetch('SELECT COUNT(*) AS unmatched_configs FROM Configurations WHERE run_id NOT IN (SELECT run_id FROM Runs)');
|
||||||
|
unmatchedMeasurements = db.fetch('SELECT COUNT(*) AS unmatched_measurements FROM Measurements WHERE run_id NOT IN (SELECT run_id FROM Runs)');
|
||||||
|
|
||||||
|
if unmatchedConfigs{1,1}~=0 || unmatchedMeasurements{1,1}~=0
|
||||||
|
fprintf('Unmatched Configurations: %d\n', unmatchedConfigs{1,1});
|
||||||
|
fprintf('Unmatched Measurements: %d\n', unmatchedMeasurements{1,1});
|
||||||
|
end
|
||||||
|
|
||||||
|
%Check for any duplicate paths
|
||||||
|
db.fetch("SELECT rx_raw_path, COUNT(*) AS occurrences FROM Runs GROUP BY rx_raw_path HAVING COUNT(*) > 1");
|
||||||
|
db.fetch("SELECT rx_sync_path, COUNT(*) AS occurrences FROM Runs GROUP BY rx_sync_path HAVING COUNT(*) > 1");
|
||||||
|
db.fetch("SELECT filename, COUNT(*) AS occurrences FROM Runs GROUP BY filename HAVING COUNT(*) > 1");
|
||||||
|
|
||||||
|
end
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
function createConfigMenu(DBHandler)
|
||||||
|
% Create the main figure window
|
||||||
|
fig = uifigure('Name', 'Configuration Query', 'Position', [100, 100, 400, 300]);
|
||||||
|
|
||||||
|
% Retrieve tables and table names using the DBHandler class
|
||||||
|
dbTables = DBHandler.getTables();
|
||||||
|
tableNames = DBHandler.getTableNames();
|
||||||
|
|
||||||
|
% Assume that the DBHandler class provides methods to get the unique
|
||||||
|
% configuration options (e.g., PAM levels, bitrates, etc.)
|
||||||
|
uniqueBitrates = unique([dbTables.bitrate]);
|
||||||
|
uniquePAMLevels = unique([dbTables.pam_level]);
|
||||||
|
uniqueWavelengths = unique([dbTables.wavelength]);
|
||||||
|
uniqueDBModes = unique([dbTables.db_mode]);
|
||||||
|
|
||||||
|
% Create dropdown menus for each configuration
|
||||||
|
lblBitrate = uilabel(fig, 'Text', 'Bitrate:', 'Position', [50, 240, 100, 20]);
|
||||||
|
dropdownBitrate = uidropdown(fig, 'Items', string(uniqueBitrates), 'Position', [150, 240, 200, 20]);
|
||||||
|
|
||||||
|
lblPAM = uilabel(fig, 'Text', 'PAM Level:', 'Position', [50, 200, 100, 20]);
|
||||||
|
dropdownPAM = uidropdown(fig, 'Items', string(uniquePAMLevels), 'Position', [150, 200, 200, 20]);
|
||||||
|
|
||||||
|
lblWavelength = uilabel(fig, 'Text', 'Wavelength:', 'Position', [50, 160, 100, 20]);
|
||||||
|
dropdownWavelength = uidropdown(fig, 'Items', string(uniqueWavelengths), 'Position', [150, 160, 200, 20]);
|
||||||
|
|
||||||
|
lblDBMode = uilabel(fig, 'Text', 'DB Mode:', 'Position', [50, 120, 100, 20]);
|
||||||
|
dropdownDBMode = uidropdown(fig, 'Items', string(uniqueDBModes), 'Position', [150, 120, 200, 20]);
|
||||||
|
|
||||||
|
% Create a button to query the configuration
|
||||||
|
btnQuery = uibutton(fig, 'Text', 'Query Configuration', 'Position', [150, 80, 200, 30], ...
|
||||||
|
'ButtonPushedFcn', @(btn, event) queryConfiguration(DBHandler, ...
|
||||||
|
dropdownBitrate.Value, ...
|
||||||
|
dropdownPAM.Value, ...
|
||||||
|
dropdownWavelength.Value, ...
|
||||||
|
dropdownDBMode.Value));
|
||||||
|
|
||||||
|
% Function to handle querying the configuration
|
||||||
|
function queryConfiguration(DBHandler, bitrate, pamLevel, wavelength, dbMode)
|
||||||
|
% Convert dropdown values to numeric if necessary
|
||||||
|
bitrate = str2double(bitrate);
|
||||||
|
pamLevel = str2double(pamLevel);
|
||||||
|
wavelength = str2double(wavelength);
|
||||||
|
dbMode = str2double(dbMode);
|
||||||
|
|
||||||
|
% Query the DBHandler class with the specified configuration
|
||||||
|
results = DBHandler.query(bitrate, pamLevel, wavelength, dbMode);
|
||||||
|
|
||||||
|
% Display the results in the command window (or update the GUI)
|
||||||
|
disp('Query Results:');
|
||||||
|
disp(results);
|
||||||
|
end
|
||||||
|
end
|
||||||
85
projects/HighSpeedExperiment_2024/auswertung/runDSP.m
Normal file
85
projects/HighSpeedExperiment_2024/auswertung/runDSP.m
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
basePath = 'C:\Users\Silas\Documents\MATLAB\Datensätze\sioe_labor\';
|
||||||
|
db = DBHandler("pathToDB",[basePath,'silas_labor.db']);
|
||||||
|
|
||||||
|
%1) Get path info from DB
|
||||||
|
filterParams = db.promptFilterParameters();
|
||||||
|
filterParams = db.tables;
|
||||||
|
filterParams.Configurations = struct( ...
|
||||||
|
'bitrate', 300e9, ...
|
||||||
|
'db_mode', 0, ...
|
||||||
|
'fiber_length', 10, ...
|
||||||
|
'interference_attenuation', [], ...
|
||||||
|
'interference_path_length', [], ...
|
||||||
|
'is_mpi', 0, ...
|
||||||
|
'pam_level', 4, ...
|
||||||
|
'precomp_amp', [], ...
|
||||||
|
'rop_attenuation', 0, ...
|
||||||
|
'symbolrate', [], ...
|
||||||
|
'v_awg', [], ...
|
||||||
|
'v_bias', [], ...
|
||||||
|
'wavelength', 1310 ...
|
||||||
|
);
|
||||||
|
% filterParams.Equalizer.eq_id = 1;
|
||||||
|
|
||||||
|
% selectedFields = db.promptSelectFields();
|
||||||
|
selectedFields = {'Runs.run_id','Runs.tx_bits_path', 'Runs.tx_symbols_path', 'Runs.rx_sync_path','Runs.rx_raw_path','Configurations.db_mode'};
|
||||||
|
pathTable = db.getPathsWithFlexibleFilter(filterParams, selectedFields);
|
||||||
|
fprintf('Found %d entries for requested Configuration. IDs are: %s \n',size(pathTable,1),jsonencode(pathTable.run_id));
|
||||||
|
|
||||||
|
selectedBerFields = {'BERs.ber_id','BERs.run_id','BERs.eq_id'};
|
||||||
|
berresult = db.getPathsWithFlexibleFilter(filterParams, selectedBerFields);
|
||||||
|
|
||||||
|
%2) Process
|
||||||
|
|
||||||
|
for i = 1:size(pathTable,1)
|
||||||
|
|
||||||
|
tx_bits = load([basePath, char(pathTable.tx_bits_path(i))]);
|
||||||
|
tx_bits = tx_bits.Bits;
|
||||||
|
tx_symbols = load([basePath, char(pathTable.tx_symbols_path(i))]);
|
||||||
|
tx_symbols = tx_symbols.Symbols;
|
||||||
|
rx_sync = load([basePath, char(pathTable.rx_sync_path(i))]);
|
||||||
|
rx_sync = rx_sync.S;
|
||||||
|
%rx_raw = load([basePath, char(result.rx_raw_path(i))]);
|
||||||
|
|
||||||
|
%2.1) EQ
|
||||||
|
for o = 1:numel(rx_sync)
|
||||||
|
rx_sig = rx_sync{o};
|
||||||
|
switch pathTable.db_mode(i)
|
||||||
|
case 0
|
||||||
|
|
||||||
|
%normal signaling
|
||||||
|
eq_ = EQ("Ne",[50,7,7],"Nb",[0,0,0],"training_length",4096*2,"training_loops",5,"dd_loops",5,"K",2,"DCmu",0.05,"DDmu",[0.0004 0.0004 0.0004 0.0004 ],"DFEmu",0.005,"FFEmu",0,"plotfinal",0,"ideal_dfe",1);
|
||||||
|
eq_sig = vnle(eq_,rx_sig,tx_symbols);
|
||||||
|
|
||||||
|
case 1
|
||||||
|
%db targeting => less precompensation; pre-coded
|
||||||
|
|
||||||
|
case 2
|
||||||
|
%db signaling => db encoded
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
rx_bits = PAMmapper(4,0).demap(eq_sig);
|
||||||
|
[~,~,ber_vnle(o),~] = calc_ber(rx_bits.signal,tx_bits.signal,"skip_front",100,"skip_end",150,"returnErrorLocation",1);
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
%2.2) Store BER to DB Table "BERs"
|
||||||
|
% structure = ""; % Description or Comment of BER technqiue
|
||||||
|
% settings = EQ;
|
||||||
|
%
|
||||||
|
% newBer = struct(...
|
||||||
|
% 'ber_id', NaN,...
|
||||||
|
% 'run_id', current_run_id,...
|
||||||
|
% 'processing_structure', structure,...
|
||||||
|
% 'processing_settings', settings,...
|
||||||
|
% 'ber', jsonencode(ber)...
|
||||||
|
% );
|
||||||
|
%
|
||||||
|
% db.appendToTable('BERs', newBer);
|
||||||
|
end
|
||||||
|
|
||||||
|
%3) Look at BER that just ran
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
wh = load('C:\Users\sioe\Documents\High_Speed_Measurement_2024\10km_bitrate_complete\20241030_170224_wh.mat');
|
wh = load('C:\Users\Silas\Documents\MATLAB\Datensätze\sioe_labor\highspeed_oct_2024\10km_bitrate_complete\20241030_170224_wh.mat');
|
||||||
wh = wh.obj;
|
wh = wh.obj;
|
||||||
|
|
||||||
M_vals = wh.parameter.M.values;
|
M_vals = wh.parameter.M.values;
|
||||||
@@ -10,8 +10,8 @@ duobinary_vals = wh.parameter.duobinary.values;
|
|||||||
rop_atten_vals = wh.parameter.rop_atten.values;
|
rop_atten_vals = wh.parameter.rop_atten.values;
|
||||||
|
|
||||||
|
|
||||||
figure(177)
|
figure(18)
|
||||||
|
tiledlayout(3, 3, 'TileSpacing', 'compact', 'Padding', 'compact');
|
||||||
|
|
||||||
for M_choose = [8]
|
for M_choose = [8]
|
||||||
sgtitle(['PAM',num2str(M_choose)])
|
sgtitle(['PAM',num2str(M_choose)])
|
||||||
@@ -36,8 +36,8 @@ for M_choose = [8]
|
|||||||
end
|
end
|
||||||
|
|
||||||
cols = linspecer(4);
|
cols = linspecer(4);
|
||||||
subplot(3,3,l)
|
%subplot(3,3,l)
|
||||||
|
nexttile;
|
||||||
if M_choose == 4
|
if M_choose == 4
|
||||||
lst = '-';
|
lst = '-';
|
||||||
mkr = 'o';
|
mkr = 'o';
|
||||||
@@ -56,24 +56,24 @@ for M_choose = [8]
|
|||||||
fsym_vals = floor( bitrate_vals*1e-9./log2(M_choose) );
|
fsym_vals = floor( bitrate_vals*1e-9./log2(M_choose) );
|
||||||
hold on
|
hold on
|
||||||
|
|
||||||
plot(bitrate_vals*1e-9,ber_db,'Color',cols(1,:),'Marker',mkr,'MarkerFaceColor','auto','DisplayName','DB pre','LineStyle',lst,'HandleVisibility',hv);
|
plot(bitrate_vals*1e-9,ber_db,'Color',cols(1,:),'Marker',mkr,'MarkerFaceColor','auto','DisplayName','DB pre','LineStyle',lst,'HandleVisibility',hv,'LineWidth',1);
|
||||||
plot(bitrate_vals*1e-9,ber_db_enc,'Color',cols(2,:)','Marker',mkr,'MarkerFaceColor','auto','DisplayName','DB enc','LineStyle',lst,'HandleVisibility',hv);
|
plot(bitrate_vals*1e-9,ber_db_enc,'Color',cols(2,:)','Marker',mkr,'MarkerFaceColor','auto','DisplayName','DB enc','LineStyle',lst,'HandleVisibility',hv,'LineWidth',1);
|
||||||
plot(bitrate_vals*1e-9,ber_vnle,'Color',cols(3,:),'Marker',mkr,'MarkerFaceColor','auto','DisplayName','VNLE','LineStyle',lst,'HandleVisibility',hv);
|
plot(bitrate_vals*1e-9,ber_vnle,'Color',cols(3,:),'Marker',mkr,'MarkerFaceColor','auto','DisplayName','VNLE','LineStyle',lst,'HandleVisibility',hv,'LineWidth',1);
|
||||||
plot(bitrate_vals*1e-9,ber_vnle_mlse,'Color',cols(4,:),'Marker',mkr,'MarkerFaceColor','auto','DisplayName','VNLE+PF+MLSE','LineStyle',lst,'HandleVisibility',hv);
|
plot(bitrate_vals*1e-9,ber_vnle_mlse,'Color',cols(4,:),'Marker',mkr,'MarkerFaceColor','auto','DisplayName','VNLE+PF+MLSE','LineStyle',lst,'HandleVisibility',hv,'LineWidth',1);
|
||||||
|
|
||||||
% Continue with the rest of your plot settings
|
% Continue with the rest of your plot settings
|
||||||
|
|
||||||
yline(3.8e-3, 'DisplayName', 'HD-FEC', 'LineStyle', '--', 'HandleVisibility', 'off');
|
yline(3.8e-3, 'DisplayName', 'HD-FEC', 'LineStyle', '--', 'HandleVisibility', 'off');
|
||||||
yline(2e-2, 'DisplayName', '20%', 'LineStyle', '--','LineWidth',1, 'HandleVisibility', 'off');
|
yline(2e-2, 'DisplayName', '20%', 'LineStyle', '--','LineWidth',1, 'HandleVisibility', 'off');
|
||||||
xlabel('Bitrate');
|
%xlabel('Bitrate');
|
||||||
ylabel('Bit Error Rate (BER)');
|
ylabel('BER');
|
||||||
title([num2str(lambda_vals(l)),' nm']);
|
title([num2str(lambda_vals(l)),' nm']);
|
||||||
set(gca, 'yscale', 'log');
|
set(gca, 'yscale', 'log');
|
||||||
set(gca, 'Box', 'on');
|
set(gca, 'Box', 'on');
|
||||||
grid on;
|
grid on;
|
||||||
grid minor;
|
grid minor;
|
||||||
legend('Interpreter', 'none','Location','southwest');
|
% legend('Interpreter', 'none','Location','southwest','Visible','off','HandleVisibility','off');
|
||||||
ylim([1e-4,1e-1]);
|
ylim([8e-4,1e-1]);
|
||||||
xlim([bitrate_vals(1)*1e-9,bitrate_vals(end)*1e-9])
|
xlim([bitrate_vals(1)*1e-9,bitrate_vals(end)*1e-9])
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
83
projects/HighSpeedExperiment_2024/single_auswertung_10km.m
Normal file
83
projects/HighSpeedExperiment_2024/single_auswertung_10km.m
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
|
||||||
|
wh = load('C:\Users\Silas\Documents\MATLAB\Datensätze\sioe_labor\highspeed_oct_2024\10km_bitrate_complete\20241030_170224_wh.mat');
|
||||||
|
wh = wh.obj;
|
||||||
|
|
||||||
|
M_vals = wh.parameter.M.values;
|
||||||
|
M_choose = M_vals(1);
|
||||||
|
lambda_vals = wh.parameter.lambda.values;
|
||||||
|
bitrate_vals = wh.parameter.bitrate.values;
|
||||||
|
duobinary_vals = wh.parameter.duobinary.values;
|
||||||
|
rop_atten_vals = wh.parameter.rop_atten.values;
|
||||||
|
|
||||||
|
|
||||||
|
figure(11)
|
||||||
|
|
||||||
|
l = 6;
|
||||||
|
for m = 1:numel(M_vals)
|
||||||
|
sgtitle(['Lambda: ',num2str(lambda_vals(l)),' nm'])
|
||||||
|
%for l = 1:numel(lambda_vals)
|
||||||
|
for b = 1:numel(bitrate_vals)
|
||||||
|
|
||||||
|
M_choose = M_vals(m);
|
||||||
|
|
||||||
|
|
||||||
|
cel = wh.getStoValue('ber_vnle',M_choose(1),lambda_vals(l),bitrate_vals(b),duobinary_vals(1),rop_atten_vals(1));
|
||||||
|
ber_vnle(b)=min(cel{1});
|
||||||
|
|
||||||
|
cel = wh.getStoValue('ber_vnle_mlse',M_choose(1),lambda_vals(l),bitrate_vals(b),duobinary_vals(1),rop_atten_vals(1));
|
||||||
|
ber_vnle_mlse(b)=min(cel{1});
|
||||||
|
|
||||||
|
cel = wh.getStoValue('ber_db',M_choose(1),lambda_vals(l),bitrate_vals(b),duobinary_vals(2),rop_atten_vals(1));
|
||||||
|
ber_db(b)=min(cel{1});
|
||||||
|
|
||||||
|
cel = wh.getStoValue('ber_db',M_choose(1),lambda_vals(l),bitrate_vals(b),duobinary_vals(3),rop_atten_vals(1));
|
||||||
|
ber_db_enc(b)=min(cel{1});
|
||||||
|
|
||||||
|
dcs_ = wh.getStoValue('dcs',M_choose(1),lambda_vals(l),bitrate_vals(b),duobinary_vals(2),rop_atten_vals(1));
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
cols = linspecer(4);
|
||||||
|
subplot(1,3,m)
|
||||||
|
|
||||||
|
if M_choose == 4
|
||||||
|
lst = '-';
|
||||||
|
mkr = 'o';
|
||||||
|
hv = 'on';
|
||||||
|
elseif M_choose == 6
|
||||||
|
lst = '-';
|
||||||
|
mkr = 'x';
|
||||||
|
hv = 'on';
|
||||||
|
elseif M_choose == 8
|
||||||
|
lst = '-';
|
||||||
|
mkr = 'diamond';
|
||||||
|
hv = 'on';
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
fsym_vals = floor( bitrate_vals*1e-9./log2(M_choose) );
|
||||||
|
hold on
|
||||||
|
|
||||||
|
plot(bitrate_vals*1e-9,ber_db,'Color',cols(1,:),'Marker',mkr,'MarkerFaceColor','auto','DisplayName','DB pre','LineStyle',lst,'HandleVisibility',hv,'LineWidth',1);
|
||||||
|
plot(bitrate_vals*1e-9,ber_db_enc,'Color',cols(2,:)','Marker',mkr,'MarkerFaceColor','auto','DisplayName','DB enc','LineStyle',lst,'HandleVisibility',hv,'LineWidth',1);
|
||||||
|
plot(bitrate_vals*1e-9,ber_vnle,'Color',cols(3,:),'Marker',mkr,'MarkerFaceColor','auto','DisplayName','VNLE','LineStyle',lst,'HandleVisibility',hv,'LineWidth',1);
|
||||||
|
plot(bitrate_vals*1e-9,ber_vnle_mlse,'Color',cols(4,:),'Marker',mkr,'MarkerFaceColor','auto','DisplayName','VNLE+PF+MLSE','LineStyle',lst,'HandleVisibility',hv,'LineWidth',1);
|
||||||
|
|
||||||
|
% Continue with the rest of your plot settings
|
||||||
|
|
||||||
|
yline(3.8e-3, 'DisplayName', 'HD-FEC', 'LineStyle', '--', 'HandleVisibility', 'off');
|
||||||
|
yline(2e-2, 'DisplayName', '20%', 'LineStyle', '--','LineWidth',1, 'HandleVisibility', 'off');
|
||||||
|
xlabel('Bitrate');
|
||||||
|
ylabel('Bit Error Rate (BER)');
|
||||||
|
title(['PAM ',num2str(M_choose),' ']);
|
||||||
|
set(gca, 'yscale', 'log');
|
||||||
|
set(gca, 'Box', 'on');
|
||||||
|
grid on;
|
||||||
|
grid minor;
|
||||||
|
legend('Interpreter', 'none','Location','southwest');
|
||||||
|
ylim([1e-4,1e-1]);
|
||||||
|
xlim([bitrate_vals(1)*1e-9,bitrate_vals(end)*1e-9])
|
||||||
|
|
||||||
|
%end
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user