2014-01-23 136 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'的末尾 –

相关问题