6 / 6 / 3
Регистрация: 31.08.2017
Сообщений: 108
|
||||||
1 | ||||||
Интерполяция данных ряда в выбранные точки с определенным шагом25.02.2020, 12:25. Показов 1004. Ответов 7
Метки Интерполяция (Все метки)
Здравствуйте!
нужна небольшая помощь. Есть данные которые(ряды) которые нужно интерполировать. Почитал, можно интерполировать значения в промежуточные узлы. Но необходимо сделать интерполяцию в определеннные точки, и с одним шагом. Как пример данные уровень 2 , 3, 5, 6, 9 , 11, 15.6, 19, 20.5 значение 15 14 13.4 12 10 9.8 8 7.8 6.2 а нужно чтоб было уровень 0 в него войдет 2 значения. Уровень 2 и 3(сответствено среднее ((15+14)/2) ) затем уровень 10, поотом 20 и т.д то есть шаг 10 будет двай файла входных: файл уровней и файл значений. В этих файлах не всегда есть данные по порядку так например может быть 2, 3, 5, 7, 29, 50, 100, 150, или 2, 100, 110, 16, 156, т.д Тогда все равно, нужно привести к одному виду То есть в независемости если там данные чтоб сетка была регулярная, а отсутствие данных забитьь например 9999 Для примера приведены сами файлы он аналогичны по названию, лишь отличаются одной буквой. Заранее всем спасибо, кто откликнится, и направит в нужное русло. Пример данных можно наверное боле грубо метом ближайшего соседа например. в Дельфи бы так Сначала обнулить
0
|
25.02.2020, 12:25 | |
Ответы с готовыми решениями:
7
Интерполяция c переменным шагом Написать цикл с определённым шагом Суммирование ячеек с определенным шагом Поиск кратчайшего пути из точки А до точки В на шахматной доске шагом коня |
483 / 427 / 205
Регистрация: 04.03.2011
Сообщений: 1,259
|
|
25.02.2020, 15:11 | 2 |
Очень тяжело понимать задание. Может есть какие-то картинки? Схемы?
0
|
6 / 6 / 3
Регистрация: 31.08.2017
Сообщений: 108
|
|
26.02.2020, 14:46 [ТС] | 3 |
46.13 -30.78 508.00 4.00 9.00 19.00 29.00 39.00 49.00 59.00 69.00
1ые цифры не читаем. 46.13 и -30.78 координаты, а 508 это количество значений в строке Итак читает с 4 ой позиции,это уровни 4,9,19,29,39 и т.д. Необходимо сделать интерполяцию в промежуточные уровни. Это чтобы сделать стандартные уровни. Таким образом, необходимо сначала получить промежуточные уровни с шагом 1. Для примера показано ниже , только часть , на интервале до 9, то есть первые два значения из строки сверху 4.00 и 9.00 46.13 -30.78 508.00 0 1 2 3 4 5 6 7 8 9 Также во втором файле 46.13 -30.78 508.00 4 9 19.00 29.00 39.00 49.00 59.00 69.00 79.00 90.00 46.13 -30.78 508.00 16 15.22 15.23 15.23 15.23 15.23 15.23 15.22 15.21 15.23 Аналогично координаты и количество 508 также проэкстраполировать в промежуточные уровни как вариант берем два уровня 4 и 9 в них значения 16 и 15.22 то есть изменение на 5 метров 0.78 делим на 5 и получаем изменение в 1 метр(0.156) далее отсчитываем влево до уровня 0 все значения а далее так и до 9 таким образом на 1 метр приходится изменение 0.156 46.13 -30.78 508 0 1 2 3 4 5 6 7 8 9 16.468+0.156 16.312+0.156 16.156+0.156 16+0.156 16 16-0.156 15.22 16.624 16.468 16.312 16.156 15.844 далее между 9 и 19 уровнем изменение 0.01 будет почти прямая таким образом весь ряд а потом получить только значения на стандартных уровнях Пока пробую через 10 шаг
0
|
117 / 83 / 39
Регистрация: 06.01.2013
Сообщений: 274
|
||||||
26.02.2020, 16:00 | 4 | |||||
1
|
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
|
||||||
26.02.2020, 16:11 | 5 | |||||
Вот Вам 3 варианта интерполяции
1
|
6 / 6 / 3
Регистрация: 31.08.2017
Сообщений: 108
|
|
27.02.2020, 16:03 [ТС] | 6 |
Сергей Тетьора,
Я пробовал такие варианты ранее выдавало ошибку Error using griddedInterpolant The grid vectors are not strictly monotonic increasing. Error in interp1 (line 186) F = griddedInterpolant(X,V,method); Добавлено через 50 секунд SSC, Да SSC, Когда вектор, получается я ранее пробовал, был рабочий код, но с матрицей не получается. Во вложении два файла. Делал свою интерполяцию, не встроенными функциями, там тоже свои недостатки, то деление на ноль иногда можно попустить.... а Как Вы предложили делал обычную линейную интерполяцию, на тех данных которых апробировал результат, получалось удовлетворительно. .... На одном векторе А дальше не удается, когда работа с крупным массивом. Отдельно вопрос как раз об ошибках, данные которые я сам получаю, я могу знать какие там могут быть ошибки и их исключаю... А те данные которые я беру с ошибками, нужно делать условия. Вот например строка 0 1060 9999 40 9999 9999 9999 1403 9999 я могу заменить а вот выпало после 0 значение 1060, затем 9999 и 40 то есть 1060 вполне нормально число , если бы оно было бы как минимум после 40 ......90...200...600.....1000...1060 тогда было бы нормально, , но в начале оно быть не может и в соответсвиии этого уровня соответсвенно и сами значения будут не верными Векторы сетки не являются строго монотонными возрастающими. Вылетает такая ошибка. Это если работаю не с вектором, а с матрицей. Только с массивом не получается. Во первых ошибка, что данные не монотонные. Это решить наверно задав пределы какие-то, либо просто убирать выборсы в данных. Интреполяция только вектора одного да удается, я это делал изначально. Ономерну.ю интеропляцию я ранее делал, Так как нужно было для единичных случаев. А теперь вывожу не единичные вектора на выходе, а небольшие массивы, по 50-100 строк. А нужно то именнно для массива проводить эту процедуру. Поэтому и создал тему.
0
|
117 / 83 / 39
Регистрация: 06.01.2013
Сообщений: 274
|
||||||
05.03.2020, 13:06 | 7 | |||||
Sayres, не очень понимаю, что Вы хотите получить. Если Ваш массив это набор отдельных векторов, то можно интерполировать в цикле.
Вот что у меня получилось:
1
|
6 / 6 / 3
Регистрация: 31.08.2017
Сообщений: 108
|
|||||||||||
12.03.2020, 13:30 [ТС] | 8 | ||||||||||
Сергей Тетьора,
Спасибо, за отклик. Это только по другому немнго делал. Такие файлы я получал, и filename = 'P20050501_prof.nc.txt'; не использую Я их выводил для примера. И их испоьзовал дальше. Это я так , но в цикле добавил, к коду котрый раньше их выводил, чтоб сразу в одном коде читать. Вопрос не получался именно набор отдельных векторов интерполировать нужно. так Как Вы написали я могу делать, но именно кажый вектор проинтерполировать не удается. То есть набор этих векторов представлен массивом, допустим 40-50 штук строк. У меня удается проинтерполировать их по наибольшему значению, как у вАс показано max(level), сначло было проще просто фиксировано ставил уровень. Потом просто по следнему значению в векторе. Так вопрос заключается менно интерполяция каждого вектора, но по последнему значению даннного вектора, а не по последнему значению во всей матрице. То есть получится не фиксировано интерполяцию для всех векторов до конца, а вектора будут не одиноковой длины и потм вывести эти все вектора, либо указав в каждом векторе признак, то есть число этих значений либо если по последнему значению в матрице, то и забить их например 9999 Добавлено через 1 час 39 минут В общем то загвостка была именно интерполяции кажого вектора отдельно, по значению последнего числа, то есть не по фиксированной длине. 5 8 10 56 100 150 у каждого своя длина 150 5 20 50 100 300 300 6 30 40 90 100 100 то есть интерполяция через 10, но конечной длины вектора реальных значений а концовку можно забить 9999 в середине значения интерполируются нормально а в конце если ряд не длинный , допустим 50 уровней, а интерполируется по 150 уровню, получается просто убывающая прямая. Я думал чтоб без цикла это сделать, но такой функции не нашел. Сергей Тетьора, Перебрал сколько вариантов, как лучше сделать, но все равно к этому виду примерно как есть сейчас пришел. Как Вы мне подсказали, в принципе я сначала так именно и начал делать, потом отказался от этого варианта и делал по кажой строчке интерполяцию не встроенной функцией, а перебирая значения формулой. Загвостка именно в том, что в том что интерполяция проходит по максимальному элементу одной сточки. Необходимо чтоб менялся Level_int(i) Индекс (i) по размеру массива, также как и для Data_int Или варивант найти
И если добавить его в Ваш код.
0
|
12.03.2020, 13:30 | |
12.03.2020, 13:30 | |
Помогаю со студенческими работами здесь
8
Построить массив циклом с определенным шагом Значение функции на отрезке с определенным шагом Как протянуть формулу с определенным шагом? Вставка значений в строки с определённым шагом Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Блоги программистов | |||||
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален
В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
|
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
|
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели
В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
|
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества
Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
|
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов.
. . .
|
С чего начать программировать микроконтроллеры
raxper 06.01.2025
Введение в мир микроконтроллеров
Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
|
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
|
Обновление сайта www.historian.by
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
|
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
|
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list):
s=^y]
p=x and y
for i in range(1,len(x)):
s. append((x^y)^p)
p=(x and y)or(p and (x or y))
return s
x=list()
y=list()
|
Это мы не проходили, это нам не задавали...(асихронный счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
|
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
|