Мне нужно создать математическую формулу на основе двух ссылок - PullRequest
0 голосов
/ 01 апреля 2019

Я в среде Go. Я ищу кроссплатформенную библиотеку, чтобы использовать для генерации моих двух формул в Python или F # или Matlab, ...

Мне нужно сгенерировать математическую формулу на основе двух ссылок

Производитель указывает, что значение датчика кодируется в байте и составляет от 0 до 255.

Минимум = 0 и имеет значение представления -60dB Максимум = 255 и имеет значение представления + 20 дБ

Теперь я должен сгенерировать две формулы:

  • RX: математическая формула, позволяющая мне интерпретировать значение, поступающее от датчика, в значение представления в дБ.

  • TX: обратное значение RX, т.е. математическая формула, позволяющая преобразовать значение представления в дБ в значение представления датчика.

Если у вас есть идея, добро пожаловать

Юсеф

Ответы [ 2 ]

1 голос
/ 01 апреля 2019

Я предполагаю, что вам нужны линейные отношения, поэтому вы можете использовать следующий код:

INPUT_MIN = 0
INPUT_MAX = 255
OUTPUT_MIN = -60
OUTPUT_MAX = 20

SLOPE = (OUTPUT_MAX - OUTPUT_MIN) / (INPUT_MAX - INPUT_MIN)

def rx(sensor_input):
    return SLOPE * (sensor_input - INPUT_MIN) + OUTPUT_MIN

def tx(dbs):
    return (dbs - OUTPUT_MIN) / SLOPE + INPUT_MIN

Что вам нужно сделать, это найти уравнение линии, заданное этими двумя точками.В Интернете есть множество учебных пособий, таких как этот .

Как только вы нашли уравнение, в котором y будет переменной, представляющей ваш вывод, а x - ваш вводвам нужно найти x в терминах y.Наконец, вы просто реализуете обе функции.

Обратите внимание, что я не ограничил ввод, поэтому в случае, если вы хотите ограничить ввод значений, я рекомендую вам добавить некоторые функции в функции.

0 голосов
/ 01 апреля 2019

В питоне, используя numpy:

import numpy as np

def RX(input_val):
    # use linspace to create lookup table
    lookup_array = np.linspace(-60,20,255)
    return lookup_array(int(input_val))

def TX(decibal_value):
    # use linspace to create lookup table
    lookup_array = np.linspace(-60,20,255)
    # find the index closest to decibal value by searching for the smallest difference 
    index = (np.abs(spectum - decibal_value)).argmin()
    return index
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...