У меня есть несколько матриц, каждый с одинаковым количеством столбцов, но с различными размерами строк. Каждая матрица содержит как положительные, так и отрицательные значения. Для группировки сакэ (потому что есть много матриц), каждая матрица хранится в массиве двумерных ячеек. Небольшой пример:Как нормализовать каждый соответствующий столбец в нескольких матрицах до значений от -1 до 1 в Matlab?
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' двумерным ячеистым массивом, где каждая ячейка является списком матриц? – rayryeng
Являются ли размеры ваших матриц одинаковыми? Если да, рассмотрите возможность использования 'cell2mat' для складывания ваших матриц в трехмерном массиве' MyMat', а затем напрямую с помощью вызовов 'min (MyMat, 3)' и 'max (MyMat, 3)' – BillBokeey
Привет, 'matSamples '- массив двумерных ячеек, в котором каждая ячейка содержит матрицу mxn, где m = выборочные значения (строки) и n = каналы (столбцы). Для каждой матрицы всегда есть 12 каналов, но количество значений выборки меняется. Извините, теперь я понимаю, что неправильно описал 'matSamples'. Я отредактирую свое сообщение соответственно. – humbleHacker