Pulse Code Modulation (PCM)

a pulse modulation technique in which the amplitude of an analog signal is converted to a binary value represented as a series of pulses.


1. Sampling: get pots in every certain time (infinite to limited)

2. Quantizing: put every uncertain value into certain value (standardization)

3. Encoding: convert that value to binary value


带通频率选取

def bandpass_sampling(f_low, f_high):
    bandwidth = f_high - f_low
    if bandwidth <= f_low:
        n = int(f_low / bandwidth)
        f_s_min = (2 * f_high) / (n + 1)
        f_s_max = (2 * f_low) / n

        result = 2 * (f_low + f_high) / (2 * n + 1)
        return f_s_min, f_s_max, result
    else:
        print("You should use lowpass-sampling")
        return None

# min, max, result = bandpass_sampling(312, 552)
# print(min, '<=', result, '<=', max)

13折线法压缩编码

def polyline_compress(max_voltage, target_voltage):
    def to_binary(num, how_many=4):
        r = bin(num)[2:]
        return r + '0' * (how_many - len(r))

    result = ''

    if target_voltage > 0:
        result = '1'
    else:
        result = '0'
    target_voltage = abs(target_voltage)

    parts = list(reversed(list(range(0, 8))))
    after = before = max_voltage
    for part in parts:
        after = after / 2
        if (after < target_voltage < before):
            print(part, ": ", before, '-', after)
            binary_part = to_binary(part, 3)
            delta = (before - after) / 16
            print(delta)
            binary_inner_part = to_binary(int((target_voltage - after) / delta), 4)
            print(int((target_voltage - after) / delta))
            result += binary_part
            result += binary_inner_part
            print(binary_part, binary_inner_part)
            return result
        before = after

# r = polyline_compress(2048, 260)
# print(r)

编码时 3位 减一,4位 不变

解码时 3位 加一,4位 不变

results matching ""

    No results matching ""