btw the elements within arrays are not in 5 element increments. the examples are just to show that there are 0 values and non-0 values
merge two arrays into one
    7 次查看(过去 30 天)
  
       显示 更早的评论
    
i am trying to merge two arrays into one array.
The goal is to create a load cycle graph of a storage system.
One array is called "charge amount" and the other array is called "discharge amount".
for example:
charge amount = [ 1 2 3 4 5 0 0 0 0 0 1 2 3 4 5 .....]
discharge amount = [ 0 0 0 0 0 -1 -2 -3 -4 -5  0 0 0 0 0 .....]
how can i merge either one of the array into the other one where the value is zero (0)?
for example:
load cycle = [1 2 3 4 5 -1 -2- 3- -4 -5 1 2 3 4 5 .....]
thank you in advance.
采纳的回答
  Star Strider
      
      
 2021-7-3
        One option is simply to add them: 
charge_amount = [ 1 2 3 4 5 0 0 0 0 0 1 2 3 4 5];
discharge_amount = [ 0 0 0 0 0 -1 -2 -3 -4 -5  0 0 0 0 0];
load_cycle = charge_amount + discharge_amount
That works for this example, at least.  
.
2 个评论
更多回答(1 个)
  Yongjian Feng
    
 2021-7-3
        Not sure what you really want. 
- If those two arrays have the same length at the time, and if the ith element of one array is non-zero, the ith element of the other array is always 0 (just like those two you showed), then it is just as easy as merged = charge_amount+discharge_amount;
- If you need to put in extra logic then you can loop through those arrays:
charge_amount = [1 2 0 0 3 4];
discharge_amount = [0 0 5 6 0 0];
merged = zeros(1, length(charge_amount));
for i=1:length(charge_amount)
   % put your logic here
   % here assuming you sum them up only if one is zero, the other one is
   % not
   if (charge_amount(i) == 0 && discharge_amount(i) != 0) || (discharge_amount(i) == 0 && charge_amount(i) != 0) 
       % if one is zero and the other one is not, merge 
       merged(i) = charge_amount(i) + discharge_amount(i);
   elseif charge_amount(i) == 0 && discharge_amout(i) == 0
       % it doesn't make any difference sum them or not
   else
       % they are both non-zero, what do you want for this case?
   end
end
0 个评论
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


