Вернуться   Форум > LabVIEW > Программирование в LabVIEW

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.04.2009, 17:44
Nata1y Nata1y вне форума
Пользователь
 
Регистрация: 05.04.2009
Сообщения: 33
По умолчанию Работа с массивами. Wavelet анализ (Помогите разобраться2)

Для начала немного о программе:
Делала в LV 8.6.
Подается сигнал (выбрать можно какой или сгенерировать из файла), затем преобразуется, с помощью непрерывного вейвлет преобразования,
получаем трехмерное изображение этого сигнала...
Это изображение строится по точкам, которые приведены в массиве CWT coef...
Мне необходимо сделать так,чтобы я могла анализировать этот массив по строкам и столбцам...(там в программе есть Methods : NF, R/R , Vk,с их помощью и анализировать)
Например

1..2..3..4..5
2..6..9..1..7
5..1..2..2..1
....и т.д.
Так вот...по горизонтали (строки) - это Scale, а по вертикали (столбцы) - Time Step,т.е. если поставить Scale = 5, а Time Step например 10, то соответственно матрицу 5х10 получим...

Так вот..мне надо сначала с помощью, например NF метода, проанализировать 1ый столбик, потом 2ой,3ий,15ый,20ый...в общем какой захочу...и тоже самое и со строками...1ую строку,10ую,55ую и т.д.
Как это можно сделать? Помогите пожалуйста с реализацией...
Вложения
Тип файла: vi CWT.vi (128.2 Кбайт, 707 просмотров)
Ответить с цитированием
  #2  
Старый 29.04.2009, 22:33
toshas toshas вне форума
Профи
 
Регистрация: 14.08.2006
Сообщения: 127
По умолчанию

у тебя есть матрица элементов, с помощью Index Array ты можешь обратится к любому элементу. зафиксировав один индекс и перебирая другой, ты можешь выделить строку или столбец из матрицы. нужно только узнать Array Size. после этого ты уже можешь работать со сторокой или столбцом как с простым одномерным массивом. если же нужно анализировать несколько столбцов или строк, выделение стоки/столбца можно взять в более общий цикл.
Изображения
  
Вложения
Тип файла: vi temp_array.vi (8.3 Кбайт, 677 просмотров)

Последний раз редактировалось toshas, 29.04.2009 в 22:49.
Ответить с цитированием
  #3  
Старый 29.04.2009, 22:51
toshas toshas вне форума
Профи
 
Регистрация: 14.08.2006
Сообщения: 127
По умолчанию

файлы к предыдущему посту
Изображения
  
Вложения
Тип файла: vi temp_array2.vi (9.2 Кбайт, 698 просмотров)
Ответить с цитированием
  #4  
Старый 30.04.2009, 08:45
Юрий Юрий вне форума
Мастер
 
Регистрация: 27.10.2006
Сообщения: 433
По умолчанию

Цитата:
Сообщение от toshas Посмотреть сообщение
у тебя есть матрица элементов, с помощью Index Array ты можешь обратится к любому элементу. зафиксировав один индекс и перебирая другой, ты можешь выделить строку или столбец из матрицы. нужно только узнать Array Size. после этого ты уже можешь работать со сторокой или столбцом как с простым одномерным массивом. если же нужно анализировать несколько столбцов или строк, выделение стоки/столбца можно взять в более общий цикл.
Работа с массивами может быть попроще.
Изображения
 
Вложения
Тип файла: vi Мавссив.vi (16.9 Кбайт, 652 просмотров)

Последний раз редактировалось Юрий, 30.04.2009 в 13:24.
Ответить с цитированием
  #5  
Старый 30.04.2009, 18:22
Nata1y Nata1y вне форума
Пользователь
 
Регистрация: 05.04.2009
Сообщения: 33
По умолчанию

Toshas, Юрий, огромное вам спасибо,уже 2ой раз помогаете!!! Что бы я без вас делала
Ответить с цитированием
  #6  
Старый 30.04.2009, 20:56
Nata1y Nata1y вне форума
Пользователь
 
Регистрация: 05.04.2009
Сообщения: 33
По умолчанию

Возникла проблема(
Toshas, когда вставила вашу программу "temp_array.vi" в свою, то добавила структуру Case, для того чтобы выбирать между строками и столбцами, чтобы потом можно было анализировать либо то,либо другое, но почему-то не работает.
Если вы посмотрите мою программу,там, на основной панели,сразу справа от трехмерного графика,есть вкладка "Rows or Tables". Я туда все поместила...
В вашей программе попробовала провернуть похожее,она работает.
Подскажите,как исправить? И еще такой вопрос...я от струры Casе тяну провода к схеме,где как раз находятся методы исследования,которые не работают. Бывает ли так,что,например,система считает значения только по столбикам или только по строкам?
Вложения
Тип файла: vi CWT.vi (65.7 Кбайт, 611 просмотров)
Тип файла: vi temp_array.vi (11.2 Кбайт, 687 просмотров)
Ответить с цитированием
  #7  
Старый 30.04.2009, 21:16
toshas toshas вне форума
Профи
 
Регистрация: 14.08.2006
Сообщения: 127
По умолчанию

приложил скриншот, думаю понятно в чем ошибка в случае столбца в исходной программе, в переделанном temp_array ее нет. (обычно столбец - col)

"Бывает ли так,что,например,система считает значения только по столбикам или только по строкам?"

не совсем понял, после case ты уже работаешь с одним конкретным столбцом или строкой которую выбрала.

p.s. и правильнее все же так, как подсказал Юрий (убрать for loop, оставляя один вход index array пустым).
Изображения
  
Ответить с цитированием
  #8  
Старый 01.05.2009, 13:15
Nata1y Nata1y вне форума
Пользователь
 
Регистрация: 05.04.2009
Сообщения: 33
По умолчанию

Провода я соединила, колонки и строки выбираются правильно,только вот дальше они не анализируются. И я не понимаю почему...Каждый раз,как я должа выбирать анализировать ли определенную строку или столбец должны отображаться соответствующие показатели и графики,но этого не происходит.
Юрий,подсажите пожалуйста по поводу вашей программы...я заполнила массив,но при нажaтии Run , программа очень долго думает, и не хочет отображаться.
Изображения
  
Ответить с цитированием
  #9  
Старый 01.05.2009, 15:50
toshas toshas вне форума
Профи
 
Регистрация: 14.08.2006
Сообщения: 127
По умолчанию

в программе Юрия необходимо заполнить массив, нажать run, и меняя номер строки или столбца, наблюдать что происходит (используется event structure, то есть программа обновит значения при изменении определенных условий, если же выбрать номер строки заранее, а потом запускать run, то можно ждать сколько угодно значения не обновятся).

теперь с программой, ты использовала tab control, расположив на разных вкладках анализ и выбор, зачем ?
получается или выбор стоки/столбца или анализ, если расположить на одной вкладке, будет и то и то одновременно.
Изображения
 
Ответить с цитированием
  #10  
Старый 01.05.2009, 16:03
toshas toshas вне форума
Профи
 
Регистрация: 14.08.2006
Сообщения: 127
По умолчанию

думаю что анализ данных лучше сделать например вот так:

пока не остановить, можно выбирать произвольную строку или столб и метод анализа.
Изображения
  
Вложения
Тип файла: vi temp_array3.vi (9.5 Кбайт, 668 просмотров)
Ответить с цитированием
  #11  
Старый 02.05.2009, 09:58
Nata1y Nata1y вне форума
Пользователь
 
Регистрация: 05.04.2009
Сообщения: 33
По умолчанию

Все-таки с утра голова лучше работает )) Проснулась и сделала правильно ))
Тольк вот почему то когда анаизируются столбцы,то значение показателя "Method indicator" не высвечивается, и линии тренда нету...а когда строки анализируются,то все в порядке...??
Ведь и там и там просто числа для анализа берутся,но в одном случае все работает,а в другом нет...не могу понять причину...(
Ответить с цитированием
  #12  
Старый 02.05.2009, 10:53
toshas toshas вне форума
Профи
 
Регистрация: 14.08.2006
Сообщения: 127
По умолчанию

программу в студию, у меня все работает, разве что в селекторе перепутаны строки со столбцами.
ты уверена что поправила это http://www.automationlabs.ru/forum/a...d=124111178 4 ?
Ответить с цитированием
  #13  
Старый 02.05.2009, 18:15
Nata1y Nata1y вне форума
Пользователь
 
Регистрация: 05.04.2009
Сообщения: 33
По умолчанию

Да,провода я соединила...
Думаю на рисунках понятно в чем проблема.
Изображения
  
Вложения
Тип файла: vi CWT NF(T,C).vi (115.1 Кбайт, 617 просмотров)
Ответить с цитированием
  #14  
Старый 02.05.2009, 20:42
toshas toshas вне форума
Профи
 
Регистрация: 14.08.2006
Сообщения: 127
По умолчанию

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

в случае row массив имеет 64 значения, после удаления 60, остается 4 и что-то еще строится, а вот column имеет ровно 500 значений и не остается ничего, это приводит к ошибке.

нужно например или выполнять цикл на 1 раз меньше (как на скриншоте) или начинать счет удаляемых значений с 0 а не с 10, точно можно сказать если разобраться в самом методе, но идея думаю понятна, недопускать образование пустого массива.
Изображения
  
Вложения
Тип файла: vi error.vi (7.4 Кбайт, 642 просмотров)
Ответить с цитированием
  #15  
Старый 07.05.2009, 12:33
Nata1y Nata1y вне форума
Пользователь
 
Регистрация: 05.04.2009
Сообщения: 33
По умолчанию

Все работает.
А как сделать так,чтобы в конце еще строился график,который бы отображал все значения "Method Indicator" по строкам или столбцам
Так в программе я выбирала анализ по строке или столбцу и мне выдавалось одно значение показателя "Method Indicator". Можно ли сделать так,чтобы программа анализировала все строки или столбики и строила график,который бы отображал все полученые точки "Method Indicator".
Наверно вы уже и так поняли мою мысль,но все же я лучше более детально объясню Т.е.
Анализируем по строкам: ставим номер строки 1, получаем одно значение "Method Indicator", ставим номер строки 2,получаем другое значение "Method Indicator" и так до N-ной строки, все полученные точки отображаются на графике зависимости "Method Indicator" от номера строки.
Точно так же и со столбцами...
Не могу понять как сделать? ( Попробовала схитрить и поставить цикл, от 1 до N, а точки "Method Indicator" подключить к самой программе,чушь какая то вышла...
Надеюсь на вашу помощь...
Вложения
Тип файла: vi CWT NF(T,C).vi (114.4 Кбайт, 658 просмотров)
Ответить с цитированием
  #16  
Старый 07.05.2009, 20:59
toshas toshas вне форума
Профи
 
Регистрация: 14.08.2006
Сообщения: 127
По умолчанию

даже обидно как-то, что ты сама не можешь такое сделать, вроде выше подробно разобрали как выбирать из таблицы то, что нужно и зацикливать выбор (

смотри: после первого запуска, coeff table я изменил на control и удалил все что шло до него. для удобства отображения я вынес в subvi все три метода счета. ну это сути не меняет, просто для удобства.

теперь используем stacked sequence structure, тоже в целях удобства восприятия. определяем сколько строк и столбцов всего, в цикле выбираем последовательно например строчки, анализируем и с помощью индексации вывода превращаем результат сразу в массив, который затем сроим на графике.
Изображения
 
Вложения
Тип файла: vi CWT.vi (23.9 Кбайт, 593 просмотров)
Тип файла: vi Untitled 1 (SubVI).vi (12.7 Кбайт, 616 просмотров)
Тип файла: vi Untitled 2 (SubVI).vi (12.0 Кбайт, 630 просмотров)
Тип файла: vi Untitled 3 (SubVI).vi (15.6 Кбайт, 635 просмотров)
Ответить с цитированием
  #17  
Старый 07.05.2009, 22:28
Nata1y Nata1y вне форума
Пользователь
 
Регистрация: 05.04.2009
Сообщения: 33
По умолчанию

Я честно стараюсь разобраться,книжки читаю,примеры всякие делаю, а не просто так, на один раз. Извини,что расстраиваю,я буду стараться...(
Напутала там с case structure и массив не подключила к циклу,чтобы определял общее количество строк и столбцов...
Ответить с цитированием
  #18  
Старый 08.05.2009, 20:06
Nata1y Nata1y вне форума
Пользователь
 
Регистрация: 05.04.2009
Сообщения: 33
По умолчанию

Когда в прошлый раз стоял цикл Loop, то я могла выбирать какую строку или столбец анализировать,вбивая число (строки,столбца) и сразу же наблюдать изменения на графике и показания Method Indicator. А здесь получается стоит обработчик от i до N значений и выдает все значения или Method indicator по столбику или строке, но анализировать отдельно каждую строку или столбец нет возможности...
Я тут сделала по своему, масло масляное,но работает...хотелось бы узнать,можно ли свести к минимуму эти операции,а то глупо получается
Вложения
Тип файла: vi CWT (All).vi (317.4 Кбайт, 689 просмотров)
Ответить с цитированием
  #19  
Старый 08.05.2009, 23:37
toshas toshas вне форума
Профи
 
Регистрация: 14.08.2006
Сообщения: 127
По умолчанию

не, зря ты так, все нормально получилось, лучше отдельно посчитать все и отдельно выбирать и считать что-то определенное, если еще и этот счет сделать только при изменении номера строки, то получается экономия ресурсов для других нужд, в отличие от того если например считать все постоянно, а отображать на экране только одно выбранное.

ну и я бы еще индикатор добавил, т.к. долго строится 3дграф.

p.s. субви можно использовать многократно один и тот же.
Вложения
Тип файла: vi CWT.vi (300.2 Кбайт, 672 просмотров)
Ответить с цитированием
  #20  
Старый 09.05.2009, 08:50
Nata1y Nata1y вне форума
Пользователь
 
Регистрация: 05.04.2009
Сообщения: 33
По умолчанию

Т.е. я заведомо неправильно делала,когда пыталась все в один блок уместить - и аналз каждой строки(столбца) и вывод всех значений Method indicator?
А скажи пожалуйста,я не понимаю назначения кнопки Analyzing,что она делает?
"ну и я бы еще индикатор добавил, т.к. долго строится 3дграф."
т.е. можно уменьшить время для того,чтобы строился 3дграф?
Ответить с цитированием
Ответ


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с массивами в памяти Vall Библиотека программ 0 02.11.2007 20:53
Анализ звукового сигнала. Помогите! Kefir Программирование в LabVIEW 4 19.11.2005 19:30

RSS


Часовой пояс GMT +3, время: 01:46.


vBulletin v3.6.1, Copyright ©2000-2019, Jelsoft Enterprises Ltd.
Русский перевод: zCarot, Vovan & Co