2016-03-05 23 views
-1

我想一次從數組constants中取兩個常量,因爲我不想逐個去看這些常量,因爲這很耗時;相反,我比較了它們引起的變化,並且只在兩個常量的影響之間發生很大變化時才作出反應。 我陣列constants在一時間在Matlab 2016a循環一個樣品constant如何在Matlab中使用兩個樣本循環數組?

constants=[45 90 180 360 720 1440 2880 5760]'; 
for constant=constants 

... 

end 

然而,我想通過一個環採取兩個常數的時間,像僞

for constant1,constant2=constants 

... 

end 

如何從一個for循環中獲取constants的兩個常量?

回答

1

像這樣的東西?

for index = 1:length(constants) - 1 
    c1 = constants(index); 
    c2 = constants(index + 1); 
end 

另一種選擇是定義一個函數,對與所述陣列中的下一個元素的每個元素 -

function result = pairAdjacent(array) 
    result = [array(1:end-1) ; array(2:end)]; 
end 

然後執行

for constant = pairAdjacent(constants) 
    c1 = constant(1); 
    c2 = constant(2); 
end 

回想一下,當使用符號

for elem = array 
    // Now elem is a single column from array 
end 

將變量elem連續分配給列中的每一列array,因此您的陣列constants需要是1xN陣列才能正常工作。

+0

我認爲最好的選擇是最好的一個,如果有像你在Matlab默認內置的建議。嗯...我有x的操作量。使用第一個建議重複所有這些操作。在一個數組中工作會節省很多麻煩。所以我認爲第二個版本再次是最好的。 –

+1

是的,不幸的是,這沒有什麼內置的。 –

+0

我最終選擇使用該功能的基本模塊表達式,如http://stackoverflow.com/q/35807238/54964底部所示。它太複雜了,無法創建新的功能並將它們集成到許多數據結構中。我認爲最簡單的方法是使用帶有模塊條件和isCompare的if子句。 –