我有一個矢量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
?
我有一個矢量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
?
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
有沒有辦法不把零置入向量a? – jdoubleu
@jdoubleu事實上,零是在這個答案中的矢量內。這是不可能有一個零索引向量(你似乎希望)。 –
@jdoubleu你可以放一個if來檢查k是否大於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
我一直在想這個,但問題是計算還沒有完成。所以我會有兩個巨大的計算,一個用於k == 1,另一個用於k> 1 – jdoubleu
如果你在這個具體的計算很感興趣,它可能是很好的知道,一個優雅的解決辦法是:'diff(0:7)' –