restructure and organize
This commit is contained in:
@@ -95,14 +95,14 @@ classdef DataStorage < handle
|
||||
|
||||
end
|
||||
|
||||
function addStorage(obj,varName)
|
||||
% add a storage
|
||||
|
||||
storage = cell(obj.dim);
|
||||
|
||||
obj.sto.(string(varName)) = storage;
|
||||
|
||||
end
|
||||
function addStorage(obj,varName)
|
||||
% add a storage
|
||||
|
||||
storage = cell(obj.getStorageSize());
|
||||
|
||||
obj.sto.(string(varName)) = storage;
|
||||
|
||||
end
|
||||
|
||||
function addValueToStorage(obj, valueToStore ,storageVarName, varargin)
|
||||
|
||||
@@ -273,14 +273,18 @@ classdef DataStorage < handle
|
||||
end
|
||||
|
||||
%append to index list :-)
|
||||
fn_=fieldnames(obj.sto);
|
||||
n_ = fn_{1};
|
||||
lin_idx(c,:) = sub2ind(size(obj.sto.(n_)),indices{:});
|
||||
% lin_idx(c,:) = eval(['sub2ind(size(obj.sto.',n_,')',str,');']);
|
||||
|
||||
end
|
||||
|
||||
|
||||
if isscalar(indices)
|
||||
lin_idx(c,:) = indices{1};
|
||||
else
|
||||
fn_=fieldnames(obj.sto);
|
||||
n_ = fn_{1};
|
||||
lin_idx(c,:) = sub2ind(size(obj.sto.(n_)),indices{:});
|
||||
% lin_idx(c,:) = eval(['sub2ind(size(obj.sto.',n_,')',str,');']);
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
% Mapping for single Index
|
||||
@@ -291,24 +295,33 @@ classdef DataStorage < handle
|
||||
|
||||
|
||||
|
||||
function [phys_indices,param_name] = getPhysIndicesByLinIndex(obj, lin_idx)
|
||||
% Converts a linear index into the corresponding physical parameter values
|
||||
% Inputs:
|
||||
% - lin_idx: The linear index within the storage array
|
||||
function [phys_indices,param_name] = 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{i} = obj.fn(i);
|
||||
phys_indices{i} = obj.parameter.(param_name{i}).getPhysForIndex(subscripts{i});
|
||||
end
|
||||
% Initialize output cell array
|
||||
phys_indices = cell(1, numel(obj.fn));
|
||||
param_name = cell(1, numel(obj.fn));
|
||||
|
||||
if isempty(obj.fn)
|
||||
return
|
||||
end
|
||||
|
||||
% Convert linear index to subscript indices
|
||||
if isscalar(obj.dim)
|
||||
subscripts = {lin_idx};
|
||||
else
|
||||
[subscripts{1:numel(obj.dim)}] = ind2sub(obj.dim, lin_idx);
|
||||
end
|
||||
|
||||
% Map subscripts to physical values for each parameter
|
||||
for i = 1:numel(obj.fn)
|
||||
param_name{i} = obj.fn(i);
|
||||
phys_indices{i} = obj.parameter.(param_name{i}).getPhysForIndex(subscripts{i});
|
||||
end
|
||||
end
|
||||
|
||||
function [physStruct, stored_value] = getPhysAndValueByLinIndex(obj, storageVarName, lin_idx)
|
||||
@@ -327,8 +340,14 @@ classdef DataStorage < handle
|
||||
% Initialize an empty structure
|
||||
physStruct = struct();
|
||||
|
||||
% Convert linear index to subscript indices
|
||||
[subscripts{1:numel(obj.dim)}] = ind2sub(obj.dim, lin_idx);
|
||||
% Convert linear index to subscript indices
|
||||
if isempty(obj.fn)
|
||||
subscripts = {};
|
||||
elseif isscalar(obj.dim)
|
||||
subscripts = {lin_idx};
|
||||
else
|
||||
[subscripts{1:numel(obj.dim)}] = ind2sub(obj.dim, lin_idx);
|
||||
end
|
||||
|
||||
% Map subscripts to physical values and parameter names for each dimension
|
||||
for i = 1:numel(obj.fn)
|
||||
@@ -343,17 +362,31 @@ classdef DataStorage < handle
|
||||
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
|
||||
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
|
||||
if isempty(obj.dim)
|
||||
num_elements = 1;
|
||||
else
|
||||
num_elements = prod(obj.dim);
|
||||
end
|
||||
end
|
||||
|
||||
function storageSize = getStorageSize(obj)
|
||||
if isempty(obj.dim)
|
||||
storageSize = [1, 1];
|
||||
elseif isscalar(obj.dim)
|
||||
storageSize = [obj.dim, 1];
|
||||
else
|
||||
storageSize = obj.dim;
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user