2014-01-23 175 views
1

是否有一種簡單的方法可以讓我們說一個數組中的每2個元素取第一個非零元素。我的數組是稀疏的雙。例如:從數組中獲取某些元素

val = 

    (1,1)    0.1667 
    (2,1)    0.1667 
    (3,1)    0.1667 
    (4,1)    0.1667 
    (5,1)    0.1667 
    (6,1)    0.1667 
    (7,1)    0.1667 
    (8,1)    0.1667 

所以我想運行我的代碼取2個值,接下來的兩個值出來等等。 像這樣:

val = 
    (1,1)    0.1667 
    (2,1)    0.1667 
    (5,1)    0.1667 
    (6,1)    0.1667 

下面是我的代碼,讓我們說,我想從第一個非零元素開始每2個元素。

results=zeros(86400,1); % time of the day in seconds 
for i=1:28, 
    currentFlowArray=allFileMin(i).demand_pattern1.Wm.total.flowArray; 
    for p=1:86400, 
     results(p)=results(p)+ currentFlowArray(p); 
    end 
end 

希望我很清楚! 提前謝謝!

回答

0

爲了獲取值出val

valnz = nonzeros(val); 
result = valnz(sort([1:4:nnz(val) 2:4:nnz(val)])); 

要刪除內val使非所需值:

ind = find(val); 
val(ind(sort([3:4:numel(ind) 4:4:numel(ind)]))) = 0; 
+0

咦?我已經將它應用到'val'的末尾 –

相關問題