フィルターのクリア

merge two arrays into one

18 ビュー (過去 30 日間)
Sehoon Chang
Sehoon Chang 2021 年 7 月 3 日
回答済み: Yongjian Feng 2021 年 7 月 3 日
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.
  1 件のコメント
Sehoon Chang
Sehoon Chang 2021 年 7 月 3 日
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

サインインしてコメントする。

採用された回答

Star Strider
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
load_cycle = 1×15
1 2 3 4 5 -1 -2 -3 -4 -5 1 2 3 4 5
That works for this example, at least.
.
  2 件のコメント
Sehoon Chang
Sehoon Chang 2021 年 7 月 3 日
編集済み: Sehoon Chang 2021 年 7 月 3 日
thanks! it worked :)
Star Strider
Star Strider 2021 年 7 月 3 日
As always, my pleasure!
.

サインインしてコメントする。

その他の回答 (1 件)

Yongjian Feng
Yongjian Feng 2021 年 7 月 3 日
Not sure what you really want.
  1. 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;
  2. 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

カテゴリ

Help Center および File ExchangeWhos についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by