5D Library › Psychophysics, the Weber-Fechner Law and Optimal Bayesian Multisensory Integration · 中文

Chapter 1 A Logarithmic Bridge between the Physical and the Subjective: Weber’s Law and Fechner’s Law

A dropping pin and a shout in the street

In a quiet room you can hear a pin drop; in a noisy street you may not catch someone shouting at you from across the road. The contrast holds two facts. First, whether a change is noticed depends on the background: the same increment of sound stands out against silence and is lost against noise. Second, the ear works over a range of intensities spanning many orders of magnitude, so it cannot respond equally to every physical increment.

The nineteenth-century German physiologist Weber was the first to state the first fact as a law. In his work on touch and weight he found that the smallest detectable difference in weight was not a fixed number of grams but proportional to the standard weight; and that weights were discriminated more finely when they were lifted than when they rested on a still hand (Weber 1834). His successors wrote the rule as

ΔII=k,\frac{\Delta I}{I} = k,

where II is the intensity of the standard, ΔI\Delta I the just noticeable difference (JND) and kk the Weber fraction. To say that a pin can be heard in a quiet room is to say that when the background II is small, a small ΔI\Delta I suffices.

Evidence

The JND for the intensity of white noise. Miller (1947) measured sensitivity to changes in the intensity of white noise over a wide range of intensities. Above about 30 dB sensation level (dB above the listener’s own threshold), the JND was roughly constant at about 0.41 dB, that is ΔI/I≈0.10\Delta I/I \approx 0.10; at lower intensities the JND in decibels grew. He also showed that the same intensity-discrimination functions describe the masking of tones and speech by white noise, and that equal numbers of JNDs do not correspond to equal loudness (Miller 1947). The last point will be needed later in this chapter.

Where Weber’s law comes from: internal noise

Why should the discriminable difference grow in proportion to intensity? Signal detection theory gives a natural explanation (volume 26, Chapter 4 introduced it; only its simplest form is used here). The nervous system’s internal representation of an intensity II is not a fixed number but a noisy one: a random variable with mean II and standard deviation σ(I)\sigma(I). Two stimuli can be told apart reliably only when the difference between their representations clearly exceeds the noise. The JND is therefore proportional to the noise: ΔI≈σ(I)\Delta I \approx \sigma(I) (taking 76 % correct in a two-interval “which is stronger?” task, that is d′=1d' = 1).

If the standard deviation of the noise is proportional to intensity, σ(I)=cI\sigma(I) = cI, Weber’s law follows. But the nervous system also has a “floor” of noise σ0\sigma_0 that does not depend on the stimulus, and Poisson-like noise that grows with the square root of intensity (fluctuations in counts of photons or nerve impulses, for example). Adding the three variances:

σ2(I)=σ02+qI+c2I2.\sigma^2(I) = \sigma_0^2 + qI + c^2I^2 .

The program below computes the JND under two combinations of noise: model A has only floor noise (σ0=1\sigma_0 = 1) and multiplicative noise (c=0.05c = 0.05); model B adds Poisson-like noise (q=1q = 1). The units are illustrative. At the end the program checks the calculation with 40,000 simulated two-interval trials.

Calculation

# Weber's law from internal noise (illustrative units). Internal response R ~ N(I, s(I)^2)
# with s^2 = s0^2 + q*I + (c*I)^2: additive, Poisson-like and multiplicative noise.
# 2AFC "which is stronger?": threshold dI = the step giving 76 % correct (d' = 1).
import math, random
from statistics import NormalDist
PHI = NormalDist().cdf
TARGET = PHI(1 / math.sqrt(2))                      # 0.760: 2AFC with d' = 1

def sd(i, s0, q, c):
    return math.sqrt(s0 ** 2 + q * i + (c * i) ** 2)

def jnd(i, s0=1.0, q=0.0, c=0.05):
    lo, hi = 0.0, 10 * sd(i, s0, q, c) + 1
    for _ in range(80):                             # bisection on percent correct
        d = (lo + hi) / 2
        pc = PHI(d / math.hypot(sd(i, s0, q, c), sd(i + d, s0, q, c)))
        lo, hi = (d, hi) if pc < TARGET else (lo, d)
    return hi

if __name__ == "__main__":
    levels = [0.1, 1, 10, 100, 1e3, 1e4, 1e5]
    print("intensity  | A: additive + multiplicative | B: plus Poisson-like term (q = 1)")
    print("           |      dI      dI/I            |      dI      dI/I   dI/sqrt(I)")
    for i in levels:
        a, b = jnd(i), jnd(i, q=1.0)
        print(f"{i:10.1f} | {a:9.2f} {a / i:8.3f}            | {b:9.2f} {b / i:8.3f}"
              f" {b / math.sqrt(i):8.2f}")
    k = jnd(1e6) / 1e6                              # Weber fraction at the top
    ia = jnd(0.0) / k                               # floor: dI at I = 0 equals k * Ia
    xs = [10 ** (e / 20) for e in range(-40, 101)]
    lin = max(k * (x + ia) / jnd(x) - 1 for x in xs)
    quad = max(abs(k * math.hypot(x, ia) / jnd(x) - 1) for x in xs)
    print(f"model A: k = {k:.4f}, Ia = {ia:.1f} (s0 / c = 20). Largest error of"
          f" dI = k (I + Ia): {lin:+.1%};")
    print(f"  of dI = k sqrt(I^2 + Ia^2): {quad:.1%} (the two differ only near I = Ia)")
    rng = random.Random(1834)
    for i in (1.0, 1000.0):
        d = jnd(i)
        ok = sum(rng.gauss(i + d, sd(i + d, 1, 0, 0.05)) > rng.gauss(i, sd(i, 1, 0, 0.05))
                 for _ in range(40000))
        print(f"check by simulation at I = {i:6.0f}: {ok / 40000:.3f} correct"
              f" (target {TARGET:.3f})")
# intensity  | A: additive + multiplicative | B: plus Poisson-like term (q = 1)
#            |      dI      dI/I            |      dI      dI/I   dI/sqrt(I)
#        0.1 |      1.00   10.008            |      1.33   13.294     4.20
#        1.0 |      1.00    1.003            |      1.69    1.690     1.69
#       10.0 |      1.13    0.113            |      3.63    0.363     1.15
#      100.0 |      5.23    0.052            |     11.61    0.116     1.16
#     1000.0 |     51.31    0.051            |     60.73    0.061     1.92
#    10000.0 |    512.99    0.051            |    523.15    0.052     5.23
#   100000.0 |   5129.85    0.051            |   5140.10    0.051    16.25
# model A: k = 0.0513, Ia = 19.5 (s0 / c = 20). Largest error of dI = k (I + Ia): +40.7%;
#   of dI = k sqrt(I^2 + Ia^2): 0.6% (the two differ only near I = Ia)
# check by simulation at I =      1: 0.763 correct (target 0.760)
# check by simulation at I =   1000: 0.758 correct (target 0.760)

At high intensities model A gives a constant Weber fraction of 0.051; below an intensity of 1 the JND stops at the value of 1.00 set by the floor noise, so ΔI/I\Delta I/I rises steeply (10.0 at I=0.1I = 0.1). This is the “correction at low intensities” of the framework: combining the Weber fraction at high intensity, k=0.0513k = 0.0513, with the JND at zero intensity gives Ia=19.5I_a = 19.5, close to σ0/c=20\sigma_0/c = 20.

The program also shows that the framework’s form ΔI=k(I+Ia)\Delta I = k(I + I_a) is only an approximation. When the variances of the two noises add, the corresponding form is ΔI=kI2+Ia2\Delta I = k\sqrt{I^2 + I_a^2} (within 0.6 % of the program’s exact calculation); the linear form overestimates by up to 40.7 % near I≈IaI \approx I_a. The linear form corresponds instead to standard deviations that add directly (if the two noises were perfectly correlated, for instance). The two forms agree far from the knee; whether real data can tell them apart depends on how precisely the knee is measured.

Model B has an extra middle region: between intensities of about 10 and 100, ΔI/I\Delta I/\sqrt{I} hardly changes (1.15, 1.16), so the JND grows as a square root; only at higher intensities does Weber’s law return. “Weber’s law” is therefore not a universal law but an approximation that holds when multiplicative noise dominates. The last two lines are the simulation check: at I=1I = 1 and I=1000I = 1000, 40,000 two-interval trials at the computed ΔI\Delta I give 0.763 and 0.758 correct, in agreement with the target of 0.760.

Note

The pin and the shout are about masking. Strictly, Weber’s law concerns how much must be added to an intensity II before the change is noticed, whereas in the street a different sound (the other person’s words) is masked by background noise. Miller’s data show that both tasks can be described by the same intensity-discrimination functions (Miller 1947). Speaking loosely in terms of Weber’s law: if the background is 60 dB (a million times) more intense, a signal must also be about 60 dB more intense to be heard. This is an illustrative inference; real masking also depends on how far the spectra of the two sounds overlap.

From Weber to Fechner: an extra assumption

In 1860, in his Elemente der Psychophysik, Fechner proposed that the magnitude of sensation could be measured by counting JNDs (Fechner 1860). His argument: if every JND is subjectively a step of the same size, $S = $ constant, then Weber’s law ΔI=kI\Delta I = kI gives dS∝dI/IdS \propto dI/I, and integration yields

S=1kln⁡II0,S = \frac{1}{k}\ln\frac{I}{I_0},

where I0I_0 is the absolute threshold. This is Fechner’s law: sensation grows with the logarithm of stimulus intensity.

There are two problems with this step. The first is mathematical: replacing a finite step by a differential goes wrong when the Weber fraction is not constant; Luce and Edwards (1958) criticised the derivation systematically (Luce and Edwards 1958), while Dzhafarov and Colonius (2011) re-examined Fechner’s reasoning: the familiar derivation from Weber’s law plus equal JNDs holds only approximately, the better the smaller the Weber fraction, and Fechner had a second derivation that does not use JNDs at all, in which the logarithmic law follows if the subjective dissimilarity of two stimuli depends only on the ratio of their intensities, a principle logically independent of Weber’s law (Dzhafarov and Colonius 2011). The second problem is more basic: “every JND is subjectively the same size” is an assumption, not an observation.

The program below first counts JNDs step by step under the generalised Weber law ΔI=k(I+Ia)\Delta I = k(I + I_a) and compares the count with Fechner’s integral; then it asks how many JNDs a “doubling” contains near threshold; finally it compares Miller’s 0.41 dB with the sone scale of loudness.

Calculation

# From Weber to Fechner, and what logarithmic units do and do not measure.
# (1) Count JNDs step by step when dI = k (I + Ia), against Fechner's integral.
# (2) Equal JNDs are not equal loudness: 0.41 dB JNDs (Miller 1947) vs sones (loudness
#     doubles per 10 dB above 40 phon, Stevens). (3) One unit of three logarithmic scales.
import math

def count_jnds(i0, i, k, ia):
    n, x = 0, i0
    while x * (1 + k) + k * ia <= i:                 # next step: x + k (x + Ia)
        x, n = x * (1 + k) + k * ia, n + 1
    return n

if __name__ == "__main__":
    k, ia, i0 = 0.10, 1.0, 1.0
    print("I / I0   JNDs counted  (1/k) ln R  ln R / ln(1+k)   [R = (I+Ia)/(I0+Ia)]")
    for i in (2, 10, 100, 1e4, 1e6):
        r = (i + ia) / (i0 + ia)
        print(f"{i:9.0f} {count_jnds(i0, i, k, ia):12d} {math.log(r) / k:12.1f}"
              f" {math.log(r) / math.log(1 + k):12.1f}")
    print("JNDs per doubling of I when Ia = 10 (Weber's law fails near threshold):")
    print("  " + "  ".join(f"{a:g}->{2 * a:g}: {count_jnds(a, 2 * a, k, 10)}"
                           for a in (1, 4, 16, 64, 1000)))
    step = 0.41                                      # dB per JND
    print("level (dB)  sones   sones gained per 0.41-dB JND")
    for level in (40, 60, 80, 100):
        s = 2 ** ((level - 40) / 10)
        print(f"{level:8d} {s:8.1f} {s * (2 ** (step / 10) - 1):14.3f}")
    print(f"40 -> 100 dB = {60 / step:.0f} JNDs; loudness grows 64-fold;")
    print(f"  one JND at 100 dB adds {2 ** 6:.0f} times the loudness of one JND at 40 dB")
    print("unit        definition                         one unit means")
    print("decibel     10 log10(P / P0)                   power x 10^0.1 = 1.259")
    print(f"magnitude   -2.5 log10(F / F0) (Pogson 1856)   flux / {100 ** 0.2:.3f}")
    print("Richter ML  log10(A / A0) (Richter 1935)       trace amplitude x 10")
# I / I0   JNDs counted  (1/k) ln R  ln R / ln(1+k)   [R = (I+Ia)/(I0+Ia)]
#         2            4          4.1          4.3
#        10           17         17.0         17.9
#       100           41         39.2         41.1
#     10000           89         85.2         89.4
#   1000000          137        131.2        137.7
# JNDs per doubling of I when Ia = 10 (Weber's law fails near threshold):
#   1->2: 0  4->8: 2  16->32: 5  64->128: 6  1000->2000: 7
# level (dB)  sones   sones gained per 0.41-dB JND
#       40      1.0          0.029
#       60      4.0          0.115
#       80     16.0          0.461
#      100     64.0          1.845
# 40 -> 100 dB = 146 JNDs; loudness grows 64-fold;
#   one JND at 100 dB adds 64 times the loudness of one JND at 40 dB
# unit        definition                         one unit means
# decibel     10 log10(P / P0)                   power x 10^0.1 = 1.259
# magnitude   -2.5 log10(F / F0) (Pogson 1856)   flux / 2.512
# Richter ML  log10(A / A0) (Richter 1935)       trace amplitude x 10

The first table shows that the JNDs counted step by step agree with the exact discrete solution ln⁡R/ln⁡(1+k)\ln R/\ln(1+k) (for an intensity ratio of 10610^6, 137 against 137.7), while Fechner’s integral (1/k)ln⁡R(1/k)\ln R is systematically about 5 % lower, the difference between ln⁡(1.1)\ln(1.1) and 0.10.1; all three grow with the logarithm of intensity. So as long as Weber’s law holds, counting JNDs does give a logarithmic scale, and on this point Fechner’s calculation is sound. The second line shows that matters differ near threshold: with Ia=10I_a = 10, doubling from 1 to 2 contains not even one JND, while doubling from 1000 to 2000 contains 7. Near threshold the “JND scale” is closer to linear than logarithmic.

The second table returns to the assumption itself. From 40 dB to 100 dB there are 146 JNDs of 0.41 dB; if each JND were subjectively the same size, loudness would grow evenly. On the sone scale, however, loudness grows 64-fold over these 60 dB, and one JND at 100 dB adds 64 times as much loudness as one JND at 40 dB. The sone scale itself comes from Stevens’s magnitude estimation (Chapter 2) and is not beyond dispute; but Miller’s observation is enough to show that the number of JNDs and the magnitude of a sensation are not the same quantity.

Left: JND divided by intensity in the internal-noise model. Solid line, floor plus multiplicative noise; dashed line, with Poisson-like noise added; dotted line, \Delta I = k(I + I_a); all approach the Weber fraction k at high intensity. Right: from 40 dB to 100 dB the number of JNDs (solid line, left axis) grows linearly with decibels, while loudness on the sone scale (dashed line, right axis) doubles every 10 dB.

Decibels, stellar magnitudes and the Richter scale: three logarithms, three histories

The framework says that the decibel, the stellar magnitude and the Richter magnitude share “a common psychophysical origin”. Checking their histories, the answer is no. The last table of the program lists the definitions of the three units.

Evidence

Stellar magnitude. Ancient astronomers sorted the naked-eye stars into six classes by brightness. In 1856 Pogson proposed fixing the brightness ratio between adjacent classes at the fifth root of 100 (about 2.512), so that a first-magnitude star is exactly 100 times brighter than a sixth-magnitude one (Pogson 1856). This predates Fechner’s book of 1860. Schulman and Cox note that Pogson relied on the belief that the eye responds logarithmically to light, whereas later psychophysical work found the response closer to a power function (Schulman and Cox 1997). Magnitudes today are measured with photometers and have nothing to do with how the eye feels.

Evidence

The decibel. The decibel comes from telephone engineering. The Bell System first defined a “transmission unit”, renamed the decibel in 1929 and defined as ten times the common logarithm of a power ratio (Martin 1929). The engineering advantage of a logarithm is that the losses of a signal through successive sections of line multiply, and their logarithms add. Sound pressure level in acoustics borrowed the definition, with a reference close to the threshold of hearing. Decibels are not proportional to loudness: an increase of about 10 dB roughly doubles loudness (Chapter 2).

Evidence

The Richter magnitude. In 1935 Richter proposed to grade earthquakes by the logarithm of the maximum trace amplitude that a standard torsion seismometer would record at an epicentral distance of 100 km; the word “magnitude” was suggested by Wood, and logarithms were taken because the range of earthquake sizes is so immense (Richter 1935). Magnitude is an instrument reading and has nothing to do with how people feel an earthquake; that is described by a different scale, intensity.

Of the three logarithmic units, then, only the stellar magnitude has a forerunner in human sensory grading, and its logarithmic form was fixed by astronomers before Fechner. The decibel and the Richter magnitude are engineering conventions adopted to handle enormous ranges of values and to simplify calculation. What they share with Fechner’s law is a mathematical form, not a psychophysical origin.

Hypothesis · not established

Not yet established: perceptual training mainly lowers floor noise rather than changing the Weber fraction. If the JND is set jointly by floor noise and multiplicative noise (model A of this chapter), then the improvement from discrimination training should be concentrated at low intensities (a smaller IaI_a), with little change in the Weber fraction kk at high intensities. If a pre-registered experiment finds that training lowers the Weber fraction at high intensity and the JND at low intensity in the same proportion, the hypothesis is false.

Chapter summary

Weber’s law says that the JND is proportional to the intensity of the standard. A model of internal noise explains it, and also explains its failure at low intensities: floor noise stops the JND from falling near threshold, and Poisson-like noise creates a square-root region at intermediate intensities. The framework’s ΔI/(I+Ia)=k\Delta I/(I + I_a) = k is an approximation; when the noise variances add, the corresponding form is ΔI=kI2+Ia2\Delta I = k\sqrt{I^2 + I_a^2}, and the two differ by up to about 40 % near the knee. Fechner’s law requires the extra assumption that every JND is subjectively the same size; Miller’s observation and the loudness scale both show that this assumption fails. The logarithmic forms of stellar magnitude, the decibel and the Richter scale each have their own history; only the stellar magnitude has a forerunner in sensory grading, and it predates Fechner. The next chapter looks at how Stevens measured sensation another way and found power functions.

References

Dzhafarov, Ehtibar N., and Hans Colonius. 2011. “The Fechnerian Idea.” American Journal of Psychology 124 (2): 127–40.
Fechner, Gustav Theodor. 1860. Elemente der Psychophysik. Breitkopf und Härtel.
Luce, R. Duncan, and Ward Edwards. 1958. “The Derivation of Subjective Scales from Just Noticeable Differences.” Psychological Review 65 (4): 222–37.
Martin, W. H. 1929. “Decibel—the Name for the Transmission Unit.” Bell System Technical Journal 8 (1): 1–2.
Miller, George A. 1947. “Sensitivity to Changes in the Intensity of White Noise and Its Relation to Masking and Loudness.” Journal of the Acoustical Society of America 19 (4): 609–19. https://doi.org/10.1121/1.1916528.
Pogson, Norman. 1856. “Magnitudes of Thirty-Six of the Minor Planets for the First Day of Each Month of the Year 1857.” Monthly Notices of the Royal Astronomical Society 17 (1): 12–15.
Richter, Charles F. 1935. “An Instrumental Earthquake Magnitude Scale.” Bulletin of the Seismological Society of America 25 (1): 1–32.
Schulman, E., and C. Cox. 1997. “Misconceptions about Astronomical Magnitudes.” American Journal of Physics 65 (10): 1003–7. https://doi.org/10.1119/1.18714.
Weber, Ernst Heinrich. 1834. De Pulsu, Resorptione, Auditu et Tactu: Annotationes Anatomicae et Physiologicae. Koehler.

Fan, Y. (2026). Psychophysics, the Weber-Fechner Law and Optimal Bayesian Multisensory Integration: From Stevens's Power Law and the McGurk Effect to Sensory Substitution, Read Beside Classical Chinese Thought on the Six Senses [心理物理学、韦伯-费希纳定律与多感官贝叶斯整合的数学模型] (Version 1.0.0). 5D Library. https://doi.org/10.5281/zenodo.23788548 · Licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).