2014-02-08 2 views
2

У меня есть простая программа, но я хочу расширить ее до большего размера. Как я могу сделать это намного проще в Matlab: здесь размер х равно 6, но в моей реальной программе она имеет размер 500.Как легко вычислить сумму некоторого числа в matlab

x=[1 2 4 7 8 9]; 
y1=x(1); 
y2=x(1)+x(2); 
y3=x(1)+x(2)+x(3); 
y4=x(1)+x(2)+x(3)+x(4); 
y5=x(1)+x(2)+x(3)+x(4)+x(5); 
y6=x(1)+x(2)+x(3)+x(4)+x(5)+x(6); 
m=[y1 y2 y3 y4 y5 y6]; 
plot(x,m) 

Большое спасибо

ответ

5
plot(x,cumsum(x)); 

cumsum делает именно то, что вы ищете.

+0

документацию можно найти здесь: http://www.mathworks.com/help/matlab/ref/cumsum.html – NKN

0

Вы можете создать массив (нули) Каждый из них имеет номер индекса. Вы можете использовать эти номера индексов для цикла for. например:

function O=Y(i) 
num=0; 
for m=1:i 
num=num+x(i); 
end 
O=num; 

вы можете использовать что-то похожее на это.

+1

Рекомендуется протестировать код перед отправкой (или, по крайней мере, быть уверенным, что это правильно). Где вы инициализируете 'x'? Функция не будет «видеть это», если вы не включите ее в качестве входа. Использование 'i' в качестве имени переменной, как вы делаете, тоже не очень хорошая идея, так как его можно путать со встроенным' i = sqrt (-1) '. Вам не нужно 'O = num', вы можете просто использовать' num' в качестве вывода. И суммирование первых чисел «k» в векторе проще сделать так: «sum (x (1: k))», нет необходимости в цикле. И цикл не работает, поскольку вы используете 'i' в качестве индекса в' x (i) ', если вы должны использовать' x (m) '. –

1

Для первых п элементов х вы можете сделать:

for i=1:n 
y(i) = sum(x(1:i)); 
end 
plot(x,y) 
+0

Я использовал следующий, но он не работал, он просто строит горизонтальную линию: x = [1 2 4 7 8 9]; для i = 1: 6 y (i) = сумма (x (1: i)); y1 = y (i) конец plot (x, y1, '. R') – user3271929

+0

Не работает, потому что вы не делаете это правильно. Ваш код печатает переменную y1, то есть последнее значение, присвоенное y, т. Е. Константу. Вы должны построить переменную y с графиком (x, y, '. R'). – sebas

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