我有几个矩阵,每个都有相同的列数,但行数不同。每个矩阵都包含正值和负值。为了分组(因为有很多矩阵),每个矩阵都存储在一个2D单元阵列中。一个小例子:如何在Matlab中将几个矩阵中的每个对应列标准化为-1和1之间的值?
Matrix1:
C1 C2 C3
Val1 6 7 1
Val2 3 9 -7
Val3 -12 -22 -4
Matrix2:
C1 C2 C3
Val1 5 19 -2
Val2 4 21 9
Val3 -1 3 11
Val4 -30 13 7
Val5 3 -4 10
matrixStore{1,1} = Matrix1
matrixStore{1,2} = Matrix2
我想正常化的值为-1到1的范围,以列方式,跨矩阵的方式。 因此,使用的例子,我得到的最大值和最小值为每一列,把他们在两个载体:
% C1: Max = 6, Min = -30
% C2: Max = 21, Min = -22
% C3: Max = 11, Min = -7
maxVals = [6, 21, 11];
minVals = [-30, -22, -7];
我现在该如何应用最大值和最小值,以标准化为所有矩阵每列?
我用下面的代码来获取最大值和最小值:
maxColsBuilder = [];
minColsBuilder = [];
% Find the max values for each column in every matrix and stack them together
maxColValsFromCell = cellfun(@max, matrixStore(1,:), 'Uni', 0);
maxColMatrix = cell2mat(maxColValsFromCell');
maxColsBuilder = [maxColsBuilder, maxColMatrix'];
% Do the same for the min values
minColValsFromCell = cellfun(@min, matrixStore(1,:), 'Uni', 0);
minColMatrix = cell2mat(minColValsFromCell');
minColsBuilder = [minColsBuilder, minColMatrix'];
% Find the max values for each column
maxVals = (max(maxColsBuilder, [], 2))'
% Also find the min values for column
minVals = (min(minColsBuilder, [], 2))'
谁能帮我用这些载体按要求规范我的数据吗?
+1
请提供实际的样品数据。我不太明白你的数据是如何格式化的。 matSamples是一个2D单元格数组,其中每个单元格都是一个矩阵列表? –
+0
矩阵的大小是否相同?如果是的话,可以考虑使用'cell2mat'在三维数组MyMat'中堆叠矩阵,然后直接使用调用'min(MyMat,3)'和'max(MyMat,3)' –
+0
嗨,matSamples '是一个二维单元阵列,其中每个单元格包含一个mxn矩阵,其中m =样本值(行)和n =通道(列)。对于每个矩阵,总是有12个通道,但是样本值的数量会有所不同。对不起,我现在意识到我描述了'matSamples'不正确。我将相应地编辑我的帖子。 –