【发布时间】:2016-11-12 14:14:14
【问题描述】:
我有几个矩阵,每个矩阵的列数相同,但行数不同。每个矩阵都包含正值和负值。为了分组(因为有很多矩阵),每个矩阵都存储在一个二维单元阵列中。一个小例子:
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 ))'
谁能帮我根据需要使用这些向量来规范化我的数据?
【问题讨论】:
-
请提供实际样本数据。我不太明白您的数据是如何格式化的。
matSamples是一个二维元胞数组,其中每个元胞都是一个矩阵列表吗? -
矩阵的大小是否相同?如果是,请考虑使用
cell2mat将矩阵堆叠在 3-D 数组MyMat中,然后直接调用min(MyMat,3)和max(MyMat,3) -
嗨,
matSamples是一个二维单元阵列,其中每个单元包含一个 m x n 矩阵,其中 m = 样本值(行)和 n = 通道(列)。对于每个矩阵,总是有 12 个通道,但样本值的数量会有所不同。抱歉,我现在意识到我错误地描述了matSamples。我会相应地编辑我的帖子。
标签: matlab matrix normalization