2016-11-09 32 views
0

我有一個矢量a=[1,2,3,4,5,6,7]和用於下面的方程的初始值a(0)=0如何爲MATLAB中的計算定義「初始值」?

for k=1:n 
    delta=a(k)-a(k-1); 
end 

我不能限定a(0)=0。任何想法如何計算delta=a1-a0

+0

如果你在這個具體的計算很感興趣,它可能是很好的知道,一個優雅的解決辦法是:'diff(0:7)' –

回答

1

MATLAB索引從1開始,而不是0。你,如果你簡單地做這並會工作等什麼:

a=[0,1,2,3,4,5,6,7]; 

for k=2:n 
    delta(k-1)=a(k)-a(k-1); 
end 

,或者如果你不想改變向量:

a=[1,2,3,4,5,6,7]; 

for k=1:n 
    if k>1 
    delta(k-1)=a(k)-a(k-1); 
    else 
    delta(1)=a(k); 
end 

或更好的是,沒有if

a=[1,2,3,4,5,6,7]; 
delta(1)=a(1); 
for k=2:n 
    delta(k-1)=a(k)-a(k-1);  
end 
+0

有沒有辦法不把零置入向量a? – jdoubleu

+0

@jdoubleu事實上,零是在這個答案中的矢量內。這是不可能有一個零索引向量(你似乎希望)。 –

+0

@jdoubleu你可以放一個if來檢查k是否大於0,如果不是,它將使用0值,我編輯答案來做到這一點。 –

0

有幾種方法可以做到這一點。該simplist IMO是如果k == 1,則inital條件適用於使用if語句來檢查:

delta = 0 
for k = 1:n 
    if k == 1 
     delta=a(k)-0; 
    else 
     delta=a(k)-a(k-1); 
    end 
end 
+0

我一直在想這個,但問題是計算還沒有完成。所以我會有兩個巨大的計算,一個用於k == 1,另一個用於k> 1 – jdoubleu