Как посчитать среднее значение?
-
- beginner
- Сообщения: 20
- Зарегистрирован: 06 фев 2010, 10:37
- Версия LabVIEW: 2009
- Контактная информация:
Как посчитать среднее значение?
есть массив данных(1-d array double). Как посчитать среднее значение?
Вот сейчас график строится так: на x идет число от 1 до 100 с шагом 1, на y
идет отношение 2х каналов. Каждые каждые 20 секунд сдвигается координата x на 1. За эти 20 секунд на y поступает 40 значений. Для каждого x на графике получается разброс точек по вертикали. Мне нужно чтобы вместо этого разброса была одна точка(среднее значение этого разброса) для каждой координаты x.
Научите, кто может.
Вот сейчас график строится так: на x идет число от 1 до 100 с шагом 1, на y
идет отношение 2х каналов. Каждые каждые 20 секунд сдвигается координата x на 1. За эти 20 секунд на y поступает 40 значений. Для каждого x на графике получается разброс точек по вертикали. Мне нужно чтобы вместо этого разброса была одна точка(среднее значение этого разброса) для каждой координаты x.
Научите, кто может.
- Вложения
-
- Снимок.JPG (28.88 КБ) 11549 просмотров
-
Pavel Krivozubov
- professor
- Сообщения: 4421
- Зарегистрирован: 07 фев 2008, 16:39
- Награды: 3
- Версия LabVIEW: 7.0 - 2013
- Откуда: г. Электросталь
- Благодарил (а): 24 раза
- Поблагодарили: 9 раз
- Контактная информация:
Re: как посчитать среднее значение?
Среднее значение массива считается путем суммирования элементов массива и деления полученного значения на количество элементов массива. Тебе помогут модули add array elements и array size.
Правила форума
Developlabs - IT услуги - ждём Ваших заказов на написание программ
Новостной канал о LabVIEW и технологиях NI на Facebook
Developlabs - IT услуги - ждём Ваших заказов на написание программ
Новостной канал о LabVIEW и технологиях NI на Facebook
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
Re: как посчитать среднее значение?
Как брать среднее уже сказали (Есть еще Mean.Vi). Тебе среднее надо за весь период поступления данных или нет?
-
- beginner
- Сообщения: 20
- Зарегистрирован: 06 фев 2010, 10:37
- Версия LabVIEW: 2009
- Контактная информация:
Re: Как посчитать среднее значение?
нет, не за весь период. Вот поступают постоянно данные для y, они мне не нужны все, а только то что намереется пока я не поменяю значение x. Допустим сперва значение x равно 1, на y идут данные и на графике строится разброс точек для x=1. Надо чтобы он копил данные, пока я не поменяю x на 2, и по этим данным находил среднее и ставил 1 точку вместо нескольких. Потом когда на x=2 опять копил данные, пока не сменится x, считал среднее уже для x=2 и ставил еще 1 точку.
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
Re: Как посчитать среднее значение?
Введи буфер в цикл, где накапливаются данные (через shift регистр. например) и по условию появления нового x- усредняй весь буфер с его последующим обнулением, а полученное число- на график.
-
- beginner
- Сообщения: 20
- Зарегистрирован: 06 фев 2010, 10:37
- Версия LabVIEW: 2009
- Контактная информация:
Re: Как посчитать среднее значение?
Извиняюсь за свою тупизну, но не могу понять что понимается под буфером. Для задания условия появления нового x нужно создать case structure в цикле, так? Как обнулить? Что почитать по этим вопросам, чтобы так не тупить?
-
mzu2006
- doctor
- Сообщения: 2456
- Зарегистрирован: 16 авг 2008, 02:12
- Награды: 3
- Версия LabVIEW: 7.1 10 11 12
- Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
- Контактная информация:
Re: Как посчитать среднее значение?
Например можно посмотреть внутренности svl_Running Equivalent Continuous Sound Level (1 Ch).vi (из пакета Sound and Vibration Toolkit). Он работает на этом принципе.
Условие появления нового X - это вызов товего VI
Эта тема уже всплывала не раз. Посмотри этот пост.
Я не исключаю, что задачу можно решить фильтром высоких частот из палитры Point by Point. Вопрос к специалистам по фильтрам.
Условие появления нового X - это вызов товего VI
Эта тема уже всплывала не раз. Посмотри этот пост.
Я не исключаю, что задачу можно решить фильтром высоких частот из палитры Point by Point. Вопрос к специалистам по фильтрам.
Правила форума (Forum rules in Russian)
rm -rf /mnt/windows
rm -rf /mnt/windows
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
Re: Как посчитать среднее значение?
Вот избыточный пример. Можно и фильтры полноценные привлечь, если необходимость будет.
- Вложения
-
- Buffer.vi
- (27.14 КБ) 399 скачиваний
-
- beginner
- Сообщения: 20
- Зарегистрирован: 06 фев 2010, 10:37
- Версия LabVIEW: 2009
- Контактная информация:
Re: Как посчитать среднее значение?
вот в этом примере усреднение идет, как я понимаю, по каждому отсчету времени. Как сделать в этом примере чтобы заместо этого времени я мог менять с помощью например Num ctrl число и при его изменении выдавалось на график среднее значение данных поступивших при значении числа до его изменения.
Еще раз извиняюсь за тупизну и невменяемость.
Еще раз извиняюсь за тупизну и невменяемость.
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
-
- beginner
- Сообщения: 20
- Зарегистрирован: 06 фев 2010, 10:37
- Версия LabVIEW: 2009
- Контактная информация:
Re: Как посчитать среднее значение?
Crowbar
благодарю. Ещё вопрос небольшой. Что делает в этом примере верхний цикл?
благодарю. Ещё вопрос небольшой. Что делает в этом примере верхний цикл?
-
FireFly
- expert
- Сообщения: 1321
- Зарегистрирован: 25 апр 2009, 08:58
- Награды: 2
- Версия LabVIEW: 2014
- Откуда: Санкт-Петербург
- Поблагодарили: 1 раз
Re: Как посчитать среднее значение?
А зачем число? Почему бы не сделать кнопку "Посчитать среднее всех накопившихся измерений":lexa писал(а):Как сделать в этом примере чтобы заместо этого времени я мог менять с помощью например Num ctrl число и при его изменении выдавалось на график среднее значение данных поступивших при значении числа до его изменения.
Копишь в Shift Register "Накопления" измерения, каждый цикл проверяешь кнопку, как только кнопка (внешняя команда) стала True - считаешь среднее Shift Register "Накопления" и результат добавляешь в Shift Register "Средние результаты", Shift Register "Накопления" обнуляешь, а кнопку сбрасываешь в False (ждешь новую команду).
Иногда лучше молчать и слыть идиотом, чем заговорить и развеять все сомнения.
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
Re: Как посчитать среднее значение?
Верхний цикл создает временные отсчеты. Его конечно же можно убрать и генерировать временные точки в нижнем. Я его отделил, чтобы ситуация была ближе к реальной. И еще: накапливаемые точки не удаляются, это надо иметь в виду (массивы раздуваются). Второе: обрати внимание на массив history (он хранит в себе уже набранные значения Trigger LVL, и если ты еще раз это число в контрол запишешь- точка не отрисуется (это сделано, чтобы не захламлять буфер график)).
-
- beginner
- Сообщения: 20
- Зарегистрирован: 06 фев 2010, 10:37
- Версия LabVIEW: 2009
- Контактная информация:
Re: Как посчитать среднее значение?
В общем хотел прийти от простой темы к сложной. Не получилось. Вот пример который предложил Crowbar делает примерно то что надо, но при применении его в используемой мной программе почему то должным образом не работает.
Попробую описать подробнее. Есть два датчика. Они измеряют интенсивность лазерных импульсов. Исходное излучение делится на 2 луча. Один идет сразу на 1й датчик, а другой проходя через образец(тонкое стекло) на 2й. Меняя положение образца измеряем интенсивность. Частота следования импульсов 2 Гц.
Изначально программа записывала в файл значения 1,2 каналов, строила график зависимости значений 1 канала от 2 канала и управляла подвижкой, перемещающей образец. Я добавил график, который строит зависимость отношения 1 и 2 канала от координаты образца. Координата х образца это цифра, которую я просто беру с подвижки. Шаг с которым перемещается образец 1 мм. На каждом значении координаты измерения длятся 20 секунд. На графике получается куча точек на каждом значении х, мне нужна 1 средняя из этой кучи точка для каждой координаты.
Когда вставляю Buffer-2.vi после запуска проверяю пробником провода и выясняется, что значения никуда не идут. Единственное что есть это в Buffer-2.vi мгновенные значения отношения каналов и координаты х, но они как замороженные, никуда не меняются.
Вот в этой теме http://www.labviewportal.org/viewtopic. ... 920#p14920
близко к моему вопросу только вот это http://www.labviewportal.org/download/file.php?id=4364
но это только для 3 измерений, у меня же их получается около 40.
Вразумите...
Попробую описать подробнее. Есть два датчика. Они измеряют интенсивность лазерных импульсов. Исходное излучение делится на 2 луча. Один идет сразу на 1й датчик, а другой проходя через образец(тонкое стекло) на 2й. Меняя положение образца измеряем интенсивность. Частота следования импульсов 2 Гц.
Изначально программа записывала в файл значения 1,2 каналов, строила график зависимости значений 1 канала от 2 канала и управляла подвижкой, перемещающей образец. Я добавил график, который строит зависимость отношения 1 и 2 канала от координаты образца. Координата х образца это цифра, которую я просто беру с подвижки. Шаг с которым перемещается образец 1 мм. На каждом значении координаты измерения длятся 20 секунд. На графике получается куча точек на каждом значении х, мне нужна 1 средняя из этой кучи точка для каждой координаты.
Когда вставляю Buffer-2.vi после запуска проверяю пробником провода и выясняется, что значения никуда не идут. Единственное что есть это в Buffer-2.vi мгновенные значения отношения каналов и координаты х, но они как замороженные, никуда не меняются.
Вот в этой теме http://www.labviewportal.org/viewtopic. ... 920#p14920
близко к моему вопросу только вот это http://www.labviewportal.org/download/file.php?id=4364
но это только для 3 измерений, у меня же их получается около 40.
Вразумите...
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 5 Ответы
- 309 Просмотры
-
Последнее сообщение AndreyDmitriev