Matlab нормализованная задача - PullRequest
2 голосов
/ 16 августа 2011

У меня 84 набора данных, 1-й набор данных был нормализован с помощью приведенного ниже кода ... Уравнение нормализации (((N-min) * 2) / (max-min)) - 1) ...

%read 1st set of data
N = xlsread('output1.xls','data');    

%normalize the 27 columns
N = bsxfun(@minus,N,min(N,[],1));
N = bsxfun(@times,N,2./max(N,[],1));
N = N - 1;
xlswrite('output1.xls',N,'normdata');

Теперь у каждого набора данных есть 27 столбцов.Исходя из исходных данных 1-го набора данных, определите максимальные и минимальные значения для каждого столбца. Итак, у нас есть 27 максимальных значений и 27 минутных значений для каждого столбца ... затем, используя эти 27 максимальных значений и 27 минутных значений для каждого столбца,чтобы нормализовать данные первого набора и набора данных со второго по 84-й ...

Однако приведенный ниже код ответа b3 отличается от приведенного выше кода.

N = xlsread('output1.xls', 'data');
minN1 = min(N);
maxN1 = max(N);
N = bsxfun(@minus, N, minN1);
N = bsxfun(@times, N, 2./maxN1);
N = N - 1;
xlswrite('output1.xls',N,'normdata');

Могу я узнать, что не так с кодом?

1 Ответ

1 голос
/ 16 августа 2011

В вашем примере первый набор данных находится в файле с именем output1.xls , поэтому я предполагаю, что все ваши входные файлы имеют форму output # .xls . Сохраните параметры нормализации для первого файла, а затем зациклите оставшиеся файлы, повторяя вычисление нормализации.

N = xlsread('output1.xls', 'data');
minN1 = min(N);
maxN1 = max(N);
N = normalize(N, minN1, maxN1);
xlswrite('output1.xls', N, 'normdata');
for ii = 2:84
    filename = sprintf('output%u.xls', ii);
    N = xlsread(filename, 'data');
    N = normalize(N, minN1, maxN1);
    xlswrite(filename, N, 'normdata');
end

function N = normalize(N, minN1, maxN1)
    N = bsxfun(@times, N 2./(maxN1-minN1));
    N = N - 1;
end
...