Я пытаюсь создать программу, которая может конвертировать длительность в азбуку Морзе на Arduino Uno. И я не могу понять, почему операторы if в длительности2morse не печатают соответствующий фрагмент, я хотел покрыть погрешность между входными значениями. Функция добавления шума использовалась для добавления вариативности для тестирования.
const int abcLength = 19;
int abcDurations[abcLength] = {420,-420,1260,-2940,1260,-420,420,-420,420,-420,420,-2940,1260,-420,420,-420,1260,-420,420};
void setup() {
Serial.begin(9600);
Serial.println("");
randomSeed(analogRead(0));
duration2morse(abcDurations,abcLength);
}
String duration2morse(int* durations, int length) {
const float Variability = 0.1;
int shortestDuration = 20000;
addNoise(durations, length, Variability);
for(int i=0; i < length; i++) {
if(abs(durations) < shortestDuration) {
shortestDuration = durations;
}
}
for(int i=0; i < length; i++) {
Serial.print(durations > shortestDuration * (1 - Variability));
if(durations > shortestDuration * (1 - Variability) && durations < shortestDuration * (1 + Variability)) {
Serial.print(".");
} else if(durations > shortestDuration * (3 - Variability) && durations < shortestDuration * (3 + Variability)) {
Serial.print("-");
} else if(abs(durations) > shortestDuration * (3 - Variability) && abs(durations) < shortestDuration * (3 + Variability)) {
Serial.print("/");
} else if(abs(durations) > shortestDuration * (7 - Variability) && abs(durations[i]) < shortestDuration * (7 + Variability)) {
Serial.print(" ");
} else {
Serial.println("miss");
}
}
}
void addNoise(int* array, int length, float fraction) {
for(int i=0; i < length; i++) {
long variability = random(fraction * 100);
long plusMinus = random(0,1);
if(plusMinus == 0) {
array[i] = array[i] + variability ;
} else if(plusMinus == 1) {
array[i] = array[i] - variability;
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... nput-value
Покрытие погрешности входного значения ⇐ C++
Программы на C++. Форум разработчиков
1764697437
Anonymous
Я пытаюсь создать программу, которая может конвертировать длительность в азбуку Морзе на Arduino Uno. И я не могу понять, почему операторы if в длительности2morse не печатают соответствующий фрагмент, я хотел покрыть погрешность между входными значениями. Функция добавления шума использовалась для добавления вариативности для тестирования.
const int abcLength = 19;
int abcDurations[abcLength] = {420,-420,1260,-2940,1260,-420,420,-420,420,-420,420,-2940,1260,-420,420,-420,1260,-420,420};
void setup() {
Serial.begin(9600);
Serial.println("");
randomSeed(analogRead(0));
duration2morse(abcDurations,abcLength);
}
String duration2morse(int* durations, int length) {
const float Variability = 0.1;
int shortestDuration = 20000;
addNoise(durations, length, Variability);
for(int i=0; i < length; i++) {
if(abs(durations[i]) < shortestDuration) {
shortestDuration = durations[i];
}
}
for(int i=0; i < length; i++) {
Serial.print(durations[i] > shortestDuration * (1 - Variability));
if(durations[i] > shortestDuration * (1 - Variability) && durations[i] < shortestDuration * (1 + Variability)) {
Serial.print(".");
} else if(durations[i] > shortestDuration * (3 - Variability) && durations[i] < shortestDuration * (3 + Variability)) {
Serial.print("-");
} else if(abs(durations[i]) > shortestDuration * (3 - Variability) && abs(durations[i]) < shortestDuration * (3 + Variability)) {
Serial.print("/");
} else if(abs(durations[i]) > shortestDuration * (7 - Variability) && abs(durations[i]) < shortestDuration * (7 + Variability)) {
Serial.print(" ");
} else {
Serial.println("miss");
}
}
}
void addNoise(int* array, int length, float fraction) {
for(int i=0; i < length; i++) {
long variability = random(fraction * 100);
long plusMinus = random(0,1);
if(plusMinus == 0) {
array[i] = array[i] + variability ;
} else if(plusMinus == 1) {
array[i] = array[i] - variability;
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79836190/covering-for-margin-of-error-in-an-input-value[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия