0

みなさん、こんにちは

配列の最大数を2番目の配列の最小数に調整するためのロジック

配列「A」があります

A=[0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1 .9 .8 .7 .6 .5 .4 .3 .2 .1 0 -.1 -.2 -.3 -.4 -.5 -.6 -.7 -.8 -.9 -1 -.9 -.8 -.7 -.6 -.5 -.4 -.3 -.2 -.1]

そして、2番目の配列を「反対」方向に配置して、配列「A」の数値が高くなると、配列「B」の数値が低くなるようにします。

配列「B」がどのように見えるかの例(そして参考のためにAも)

B=[1 .9 .8 .7 .6 .5 .4 .3 .2 .1 0 -.1 -.2 -.3 -.4 -.5 -.6 -.7 -.8 -.9 -1 -.9 -.8 -.7 -.6 -.5 -.4 -.3 -.2 -.1 0 .1 .2 .3 .4 .5 .6 .7 .8 .9]
A=[0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1 .9 .8 .7 .6 .5 .4 .3 .2 .1 0 -.1 -.2 -.3 -.4 -.5 -.6 -.7 -.8 -.9 -1 -.9 -.8 -.7 -.6 -.5 -.4 -.3 -.2 -.1]

このロジックを使ってみましたが、もちろんすべてがポジティブになります

arrayB=-abs(arrayA).+abs(max(arrayA));

しかし、それはうまくいきませんでした私はmatlabを使用していますが、誰かが正しいロジックを知っている場合は、matlab構文に変換できます

tia

数字は信号のさまざまな振幅を表しているため、一方の信号アレイAの振幅が増加している場合、もう一方の信号アレイBは減少している必要があります。「オーバーラップ」があります

4

4 に答える 4

0

リック、

それはB[i]= 1 --abs(A [i])のように単純ですか...それとも何かが足りませんか?

ネガはす​​ぐに整列しなくなり、関係を確認するのが難しくなります。

乾杯。キース。


編集:いいえ、それはそれほど単純ではありません!

これらの結果を生成する「通常の計算」はありません。

私たちが立ち上がるまではすべて良い.1 0 -.1です...-.9 -1 -.9

10ごとに結果の符号を入れ替えて、10秒ずつ「ウォークスルー」する必要があると思います。

A=[0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1  .9  .8  .7  .6  .5  .4  .3  .2  .1  0 -.1 -.2 -.3 -.4 -.5 -.6 -.7 -.8 -.9 -1 -.9 -.8 -.7 -.6 -.5 -.4 -.3 -.2 -.1]
B=[1 .9 .8 .7 .6 .5 .4 .3 .2 .1 0 -.1 -.2 -.3 -.4 -.5 -.6 -.7 -.8 -.9 -1 -.9 -.8 -.7 -.6 -.5 -.4 -.3 -.2 -.1  0  .1  .2  .3  .4  .5  .6  .7  .8  .9]

それは意味がありますか?なぜ私が高レベルの数学をしなかったのかがわかります。

乾杯。キース。

于 2011-04-27T07:49:17.473 に答える
0

次のコードは多かれ少なかれあなたが望むことをしますか?

Ad = diff(A);
B = cumsum([max(A) -Ad]);
于 2011-04-27T08:34:43.117 に答える
0

あなたのタイトルと説明は非常に紛らわしいです、そして私はあなたが何をしようとしているのか彼らから言うことができません。Bただし、入力配列から生成する目的の出力配列を見て、Aその変換を実行するいくつかの操作を提供できます。

B = max(A)-cumsum([0 abs(diff(A))].*sign(A+eps));

これにより、配列に沿った値の絶対 Aが検出され、これらの差に(信号にEPSを追加して0を正としてカウントする)の要素の符号が乗算され、これらの値の累積合計が取得され、の最大値から減算されます。AA

この場合の別の解決策は、配列インデックスAを使用する循環シフトを作成することです。たとえば、最大値が配列の先頭になるように配列をシフトすると、目的の配列が得られます。AB

[~,maxIndex] = max(A);
B = A([maxIndex:end 1:maxIndex-1]);
于 2011-04-27T14:52:46.943 に答える
0

これも正しい答えを作成します

A=[0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1 .9 .8 .7 .6 .5 .4 .3 .2 .1 0 -.1 -.2 -.3 -.4 -.5 -.6 -.7 -.8 -.9 -1 -.9 -.8 -.7 -.6 -.5 -.4 -.3 -.2 -.1]';

B=circshift(A,30)
于 2011-04-27T19:17:18.380 に答える