Среднее значение нескольких столбцов

Я много искал, чтобы найти решение, но мне кажется, что ничего не работает.

я имею n файлы данных, содержащие по два столбца каждый (импортируются с использованием uigetfile). Для извлечения данных я использую for loop как это:

for i=1:n
    data{i}=load(filename{i});
    x{i}=data{i}(:,1);
    y{i}=data{i}(:,2);  
end

Теперь я хочу получить среднее значение для каждой строки из всех (скажем) x-значений. Например:

x{1} = [1,4,7,8]

x{2} = [1,2,6,9]

Тогда я хочу что-то вроде

x_mean = [1,3,6.5,8.5]

Я пытался (где k это количество строк)

for i=1:n
        data{i}=load(filename{i});
        x{i}=data{i}(:,1);
        y{i}=data{i}(:,2);  
    j=1:k
        x_mean=sum(x{i}(j))/n
end

Но я не могу использовать несколько счетчиков в цикле for (как я понимаю). Более того, я не пользуюсь mean поскольку я не понимаю, как я могу использовать это в этом случае.

Если бы кто-то мог мне помочь, было бы здорово!

1 ответ

Решение

Вы можете захватить содержимое каждого числового массива в ячейке x в новый числовой массив x_num вот так:

x_num = [x{:}]

Вычисление среднего значения так же просто, как

mean_x = mean( [x{:}] )

Для вашего примера, это дает вам среднее значение всех чисел во всех массивах в xкоторый, следовательно, будет скалярным.

Если вы хотите вычислить среднее значение всех строк (среднее по столбцам), как показывает ваш пример), вы должны объединить массивы по вертикали, что можно сделать с помощью cat:

mean_x_columnwise = mean( cat(1,x{:}) )

Если вы хотите взять среднее значение по всем столбцам (среднее по строке), вам нужно только указать mean что вы смотрите на другое измерение:

mean_x_rowwise = mean( cat(1,x{:}), 2)
Другие вопросы по тегам