Среднее значение нескольких столбцов
Я много искал, чтобы найти решение, но мне кажется, что ничего не работает.
я имею 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)