2016-08-16 6 views
-2

iOSで録画を再生できるアプリを開発しました。 iOSでは、音量範囲は0〜1です。すなわち、0または1のいずれかを返します。表現の目的で、その範囲を0〜10にスケールしたいと思います。どうやってやるの?0-1から0-10までの値の範囲を調整する方法

+0

あなたからのコメントを読んだ後、本当に尺度に2つの値しかない場合でも、唯一の情報不足のために2つの値を含む尺度を論理的に他の尺度に変更することはできません。 – phil13131

答えて

2

により、すべての値を掛け、10のスケールファクタを適用する必要があります。もちろん

scaledValue = inputValue * 10; 

を、入力がある場合:私はむしろそう機会にあなたがそれを行う方法がわからない、明白なことを述べることを躊躇(すなわち、恩着せ音にしたくない)が、 0..10の範囲にあることを望むなら、0..1を必要とするiOS関数に渡すときに10で除算する必要があります。

入力スケールと出力スケールの両方について何らかの説明の浮動小数点値を使用していることを確認してください。そうでなければ、スケーリングが期待どおりに機能しない問題が発生する可能性がありますすべてのスケーリングが完了した後、最後のステップとして整数に変換します)。


(a)のしたいスケーリングが非直線的である場合は、C#の式はどのようなあなたに著しく類似するであろうということを念頭に置いて、私たちにあなたが使用したい数式を伝える必要があります与える。任意の脊髄タップファンはあなたを教えてくれますようそしてもちろん、最高のアンプはあなたの番号がfloat

float map(float x, float in_min, float in_max, float out_min, float out_max 
{ 
    return (x - in_min) * (out_max - out_min)/(in_max - in_min) + out_min; 
} 

in_min -> in_max

out_min -> out_maxご入力範囲ですと仮定すると

+0

ボリューム範囲が0と1の2つの値しか与えないため、これは機能しません。 – Arti

+0

@Arti 2つの値だけを持つスケールを、それよりも大きなスケールに変更したいのですが?それはあまり意味がありません...ボリュームスケールの場合は、0から1の範囲の浮動小数点を返すと仮定します。そうでなければ、ボリュームがオフになるかmaxでも意味をなさないでしょう。 – phil13131

+1

@Arti、OSから '0'または' 1'だけを取得している場合は、 '0'と' 10'に(かなり正確に)拡大縮小されます。他の方法でそれを拡大するのに十分な情報がありません。私はあなたが浮動小数点値ではなく '0 'または' 1'に限定されるように、 '0..1 'の範囲の浮動小数点値を引き起こしていると考えています。あなたはそれを修正する必要があります。 – paxdiablo

2

スケーリングは、通常、乗算に関連付けられます。ここで、あなただけのため、あなたはそれが直線は、(a)の、それは10を掛けるだけの簡単な作業ですスケールすると仮定すると、10

+0

すべての値を掛けても、0〜10の範囲にはなりません。私は0と1の2つの値しか持たず、0,1,2,3、... 10の範囲を取得したいと考えています。 – Arti

関連する問題