2013-10-27 4 views
0

Мне нужно суммировать несколько векторов, но их количество варьируется.MATLAB: сумма переменной числа векторов

у меня есть:

g1 = [1 3 4 5 3 4 6 2 3 4 6 6] 
g2 = .... 
. 
. 
. 
gn = [3 4 5 6 4 5 6 2 4 7 8 9] 

И я должен суммировать все из них:

G=sum(g1 to gn) 

Как я могу это сделать?

+2

Это кажется мне, что у вас есть список скаляров (не векторов) и очевидным способом было бы использовать вместо этого вектор: g (1) = 134534623466; g (2) = 35645624564524572' и т. д. –

+0

Да, это моя ошибка представления. «G» - это ВЕКТОРЫ, а не скаляры ... – Trenera

+0

Все ли векторы одинакового размера? Вы хотите суммировать элементы для получения _vector_ или суммировать все элементы всех векторов для получения _number_? –

ответ

3

Было бы намного проще, если бы вы сохранили все ваши векторы в матрице g, по одному вектору в каждой строке. Тогда желаемым результатом будет просто sum(g).

Если вам действительно нужно, чтобы каждый вектор в другой переменной, можно вычислить сумму с eval в цикле:

result = zeros(size(g1)); % initialize sum 
for ii = 1:n 
    eval(['result = result + g' num2str(ii) ';']) % add ii-th vector to the sum 
end 
2

попробовать это:

сумма (arrayfun (@ (я) Eval ([ 'г' num2str (я)]), 1: п))

(суммы всех скалярами имя шаблона gX, где X = 1 ... n)

+0

Я пробовал так: ____________ n = mes-1; % = 8____________ Gxx_avg = sum (arrayfun (@ (i) eval (['Gxx' num2str (i)]), 1: n)) ______________Но это дает мне: _____________________ ??? Ошибка при использовании ==> eval Неопределенная функция или переменная 'Gxx1'. – Trenera

+0

@Mercury Здесь же ошибка. Ваш подход был очень хорошим, но, по-видимому, 'eval' не может использоваться в анонимной функции –

Смежные вопросы