2014-02-08 39 views
2

我有以下簡單的程序,但我想將其擴大到更大的大小。我怎樣才能做到這一點在Matlab容易得多:這裏x的大小爲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

您可以創建陣列(零) y的每一個都有一個索引號,所以你可以在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))'一樣容易完成,不需要循環。而循環不起作用,因爲當你應該使用'x(m)'時,你在'x(i)'中使用'i'作爲索引。 –

1

對於你能做的X第n個元素:

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

我用下面的,但它沒有工作,只是繪製一條水平線:x = [1 2 4 7 8 9]; y(i)= sum(x(1:i));對於i = 1:6, y1 = y(i) 結束 plot(x,y1,'。r') – user3271929

+0

它不工作,因爲你沒有正確地做。您的代碼正在打印變量y1,即y的最後一個值,即常量。你應該用plot(x,y,'。r')繪製變量y。 – sebas