Вложенный цикл для обработки данных столбцов в MATLAB

У меня есть 100 столбцов xlsx файла с размером (4097,100). Мне нужно прочитать первый столбец и выполнить некоторую обработку, и это приведет к четырем переменным строки (по 1,4097 каждому) только для первых данных столбца. Кроме того, мне нужно обработать каждую из этих четырех переменных строки, чтобы получить ее статистические параметры, такие как min, max, mean, SD, var в MATLAB. Как это сделать с вложенным циклом? Я ценю вашу помощь. Образец кода MATLAB, который я пытаюсь, это то, где я рассмотрел только два столбца A1 и A2:

A = xlsread('S.xlsx'); num_rows = size(A,1); num_cols = size(A,2); A1 = A (:,1); A2 = A (:,2); B = {A1,A2}; for i = 1:2 for j = 1:4 IMF = emd(B{i},'STOP',[0.1,0.5,0.05],'MAXITERATIONS',100); I1 = IMF (1,:); I2 = IMF (2,:); I3 = IMF (3,:); I4 = IMF (4,:); imf = {I1, I2, I3, I4}; m1(j) = mean(imf{j}); m2(j) = min(imf{j}); m3(j) = max(imf{j}); m4(j) = std(imf{j}); m5(j) = var(imf{j}); end end 

Еще один вариант кода, который я пробовал:

 A = xlsread('S.xlsx'); num_rows = size(A,1); num_cols = size(A,2); A1 = A (:,1); A2 = A (:,2); B = {A1,A2}; for i = 1:2 IMF = emd(B{i},'STOP',[0.1,0.5,0.05],'MAXITERATIONS',100); I1 = IMF (1,:); I2 = IMF (2,:); I3 = IMF (3,:); I4 = IMF (4,:); imf = {I1, I2, I3, I4}; for j = 1:4 m1(j) = mean(imf{j}); m2(j) = min(imf{j}); m3(j) = max(imf{j}); m4(j) = std(imf{j}); m5(j) = var(imf{j}); end end 

Но успеха нет. Я получаю значения статистики только для первого столбца, т.е. четырех значений для I1, I2, I3 и I4. Второй столбец A2 не обрабатывается.

Я думаю, проблема в том, что вы переписываете свои результаты. Вы всегда можете запустить свой код шаг за шагом, используя отладчик Matlab, чтобы проверить, что именно происходит.

 A = xlsread('S.xlsx'); m1 = zeros(2, 4); m2 = zeros(2, 4); m3 = zeros(2, 4); m4 = zeros(2, 4); m5 = zeros(2, 4); for i = 1:2 IMF = emd(A(:, 1),'STOP',[0.1,0.5,0.05],'MAXITERATIONS',100); m1(i, :) = mean(IMF, 2); m2(i, :) = min(IMF, [], 2); m3(i, :) = max(IMF, [], 2); m4(i, :) = std(IMF, 0, 2); m5(i, :) = var(IMF, 0, 2); end 

Обратите внимание, что я удалил некоторые временные переменные, избегал вложенного цикла и превалировал переменные вне цикла. Это может уменьшить время выполнения.

  • Объединение ячеек в Matlab (например, в Excel) для таблицы на основе массива
  • Написание документа xls из автономного приложения
  • Запись данных на один лист Excel с использованием MATLAB
  • Matlab xlsread открывает файлы и очищает
  • Выходной массив Matlab для Excel или другого формата файла с определенным именем
  • разделение данных с одного листа excel на несколько файлов excel с использованием MATLAB
  • VBA: использование функции в файле Excel, созданной в Matlab
  • экспортировать результаты MATLAB под MATLAB с использованием нескольких циклов на разные листы файла Excel
  • Как удалить всю строку, которая имеет пустую ячейку в любом столбце, листа excel, содержащего как тексты, так и номера
  • Как импортировать строку из Excel в MATLAB?
  • Запись данных matlab из gui в файл excel и только для чтения
  • Давайте будем гением компьютера.