正の数と負の数が交互に出現するような配列から,各正の数エリアと負の数エリアで絶対値が最大である要素を求めたい.
이전 댓글 표시
実現したいこと
[-1, -2, 4, 2, 3, -2, -4, -5, 1, 4, 6, 7]
上記のような正の数と負の数が交互に出現するような配列があった際に,各正の数エリアと負の数エリアで絶対値が最大である要素を求めたいです.
上記配列の場合下記のような配列を想定しています.
[-2, 4, -5, 7]
試したこと
グループ化変数を作成しようと思い,正負で判定したlogical配列を作成しました.(正:1,負:0)
[0, 0, 1, 1, 1, 0, 0, 0, 1, 1, ,1 ,1]
これを下記のように変換できれば,実現できるのではと考えています.
[1, 1, 2, 2, 2, 3, 3, 3, 4, 4, ,4 ,4]
1,2,,3,4への変換が可能な方,「実現したいこと」の内容が実現可能な方,どちらか片方でも構わないのでご教示いただけますと幸いです.
채택된 답변
추가 답변 (1개)
> 1,2,,3,4への変換が可能な方 ハイッ (・ω・*∩
零は現れないと想定し「正の数エリア」に含めました。
入力値が負⇒零⇒負と変化する様な場合は、最大値が零の「正の数エリア」が生成されます。
x = [-1, -2, 4, 2, 3, -2, -4, -5, 1, 4, 6, 7];
y_correct = [-2, 4, -5, 7];
sgn = x >= 0 % 符号情報(ゼロ以上:1,負:0)、sign関数は使用しなかった
bnd = [1 abs(diff(sgn))] % 符号が変化する境界を得る
area = cumsum(bnd) % 上記を累積する
카테고리
도움말 센터 및 File Exchange에서 Logical에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!