从数组中获取某些元素

时间:2014-01-23 16:21:13

标签: matlab double sparse-matrix

是否有一种简单的方法来选择让我们说第一个非零元素的数组中的每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

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

1 个答案:

答案 0 :(得分: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;