Działania matematyczne na waveform'ach
Działania matematyczne na waveform'ach
Witam Wszystkich
Jest to mój pierwszy post także w razie błędów proszę o wyrozumiałość.
Z LabView do czynienia mam od niedawna i od razu zostałem rzucony na głęboką wodę no ale się nie poddaje - do sedna:
Chcę wykorzystywać wpisywalną formułę matematyczną do przebiegów sygnałów. O co chodzi? Powiedzmy że jako sygnały dane są: prąd i napięcie, więc poprzez wpisanie c3=c1*c2, otrzymam moc i taką uproszczoną wersję udało mi się zrobić (Załączniki) ale działa to tylko wtedy jeśli podam właśnie formułę tak zapisaną tzn. dwie linijki(tzn np w jednej linii c3=c1, a w drugiej c3=c2) już nie przejdą, tak samo próba przypisania jakiejś wartości do c1 lub c2 (w sumie logiczne bo są to tylko zmienne wejściowe no ale chciałbym aby była taka możliwość). Dodatkowo fajnie by było gdyby dało się wybrać fragment przebiegu np poprzez taki zapis c1(50:500. I teraz moje pytanie - czy da się coś takiego zrobić? Zaznaczam że nie chcę na sztywno przypisywać, że np c1 to napięcie, c2 to prąd, a c3 to moc itd, stąd właśnie konieczność innego rozwiązania. Ja bazowałem na eval formula node, ale i tak coś pokręciłem z rozmiarami tablic, nie mniej jednak działa tylko, że chciałbym to usprawnić i rozszerzyć możliwości
Jest to mój pierwszy post także w razie błędów proszę o wyrozumiałość.
Z LabView do czynienia mam od niedawna i od razu zostałem rzucony na głęboką wodę no ale się nie poddaje - do sedna:
Chcę wykorzystywać wpisywalną formułę matematyczną do przebiegów sygnałów. O co chodzi? Powiedzmy że jako sygnały dane są: prąd i napięcie, więc poprzez wpisanie c3=c1*c2, otrzymam moc i taką uproszczoną wersję udało mi się zrobić (Załączniki) ale działa to tylko wtedy jeśli podam właśnie formułę tak zapisaną tzn. dwie linijki(tzn np w jednej linii c3=c1, a w drugiej c3=c2) już nie przejdą, tak samo próba przypisania jakiejś wartości do c1 lub c2 (w sumie logiczne bo są to tylko zmienne wejściowe no ale chciałbym aby była taka możliwość). Dodatkowo fajnie by było gdyby dało się wybrać fragment przebiegu np poprzez taki zapis c1(50:500. I teraz moje pytanie - czy da się coś takiego zrobić? Zaznaczam że nie chcę na sztywno przypisywać, że np c1 to napięcie, c2 to prąd, a c3 to moc itd, stąd właśnie konieczność innego rozwiązania. Ja bazowałem na eval formula node, ale i tak coś pokręciłem z rozmiarami tablic, nie mniej jednak działa tylko, że chciałbym to usprawnić i rozszerzyć możliwości
- Załączniki
-
- math formula.vi
- vi w wersji 8.6
- (182.29 KiB) Pobrany 368 razy
-
- math formula.vi
- to samo tylko, że w wersji której używam -2010
- (165.32 KiB) Pobrany 333 razy
-
PiDi
- Posty: 641
- Rejestracja: 31 gru 2010 01:36
- Wersja środowiska: LabVIEW 2017
- Lokalizacja: Katowice
Re: Działania matematyczne na waveform'ach
Witam
W załączniku przykłady użycia bloczków do formuł. O tej porze niewiele więcej mogę zaoferować, ale może to naprowadzi na coś. Co do użycia tablic, to zerknij na inne vijaje z palety Mathematics->Scripts And Formulas->1D & 2D Evaluation. Coś z tablicami tam jest, ale sam jeszcze nie korzystałem z nich.
Pozdrawiam i życzę udanej przygody z forum!
W załączniku przykłady użycia bloczków do formuł. O tej porze niewiele więcej mogę zaoferować, ale może to naprowadzi na coś. Co do użycia tablic, to zerknij na inne vijaje z palety Mathematics->Scripts And Formulas->1D & 2D Evaluation. Coś z tablicami tam jest, ale sam jeszcze nie korzystałem z nich.
Pozdrawiam i życzę udanej przygody z forum!
- Załączniki
-
- formula.vi
- (12.82 KiB) Pobrany 308 razy
Działania matematyczne na waveform'ach
Dziękuję bardzo, faktycznie coś już można zrobić, ale czy jest jakiś sposób żeby móc się do tablicy odwoływać wektorowo? tak jak np w formula node mogę wpisać Y i to przejdzie a przez eval parsed formula node/string już się nie da;/ można to jakoś obejść?
-
PiDi
- Posty: 641
- Rejestracja: 31 gru 2010 01:36
- Wersja środowiska: LabVIEW 2017
- Lokalizacja: Katowice
Re: Działania matematyczne na waveform'ach
Obejść się da na pewno w taki sposób, jak w załączniku - wybrać zakres tablicy przed obliczeniami. Na pewno można też spróbować obudować to we własny parser, który będzie z wyrażeń typu "x(5:500)" sam w podany w załączniku sposób wydzielał odpowiednią część tablicy. Nie powinno to być bardzo trudne.
- Załączniki
-
- formula_tablice.vi
- (9.86 KiB) Pobrany 343 razy
Działania matematyczne na waveform'ach
hmmm ale w jaki sposób można takie coś zrobić? Rozumiem o co Ci chodzi i to by rozwiązało cały problem ale nawet nie rozumiem stwierdzenia
obudować to we własny parser
-
PiDi
- Posty: 641
- Rejestracja: 31 gru 2010 01:36
- Wersja środowiska: LabVIEW 2017
- Lokalizacja: Katowice
Re: Działania matematyczne na waveform'ach
W załączniku prosty parser. Może trochę strasznie na pierwszy rzut oka wyglądać, ale polecam prześledzenie działania krok po kroku i podglądanie zawartości drutów. Trzeba tam trochę popracować nad wykrywaniem i obsługą błędów.
- Załączniki
-
- parser.vi
- (40.1 KiB) Pobrany 346 razy
Działania matematyczne na waveform'ach
wow...faktycznie wygląda na bardzo skomplikowane, ale komentarze są baaardzo pomocne! dziękuję ślicznie:)
Jesteś wielki!
a jakbym chciał zrobić podmienianie wartości np. x (1:3)=0, czyli przypisze wartość 0 do tych elementów to na tej samej zasadzie tak? tzn wyszuka string ze znakiem równości i podmieni poprzez replace array subset tak? tylko, że w sumie to się mija z celem bo nie zmienię tych początkowych tablic?
aaa i jeszcze mam pytanie: dlaczego wysypuje się kiedy podam tylko jedną zmienną? tzn formuła będzie taka: x (1:3) , ewentualnie wcale nie podam nawiasu?
Jesteś wielki!
a jakbym chciał zrobić podmienianie wartości np. x (1:3)=0, czyli przypisze wartość 0 do tych elementów to na tej samej zasadzie tak? tzn wyszuka string ze znakiem równości i podmieni poprzez replace array subset tak? tylko, że w sumie to się mija z celem bo nie zmienię tych początkowych tablic?
aaa i jeszcze mam pytanie: dlaczego wysypuje się kiedy podam tylko jedną zmienną? tzn formuła będzie taka: x (1:3) , ewentualnie wcale nie podam nawiasu?
-
PiDi
- Posty: 641
- Rejestracja: 31 gru 2010 01:36
- Wersja środowiska: LabVIEW 2017
- Lokalizacja: Katowice
Re: Działania matematyczne na waveform'ach
Nie traktuj tego kodu absolutnie jako gotowca do użycia, a raczej jako sugestię, co można zrobić i jakie bloczki wykorzystać ;) Jak powiedziałem, trzeba tam popracować nad obsługą błędów. Na przykład wpisanie "x (1:3)" (ze spacją) wysypie program, bo założyłem, że nazwa zmiennej leży zaraz przed nawiasem. Tak samo wpisanie samego "x" powoduje, że X Values jest opróżniane. Sprawdź też sobie, jak się zachowuje ten program, gdy wpiszesz "x(1:3) + y(1:2)", czyli różne długości tablic - to kolejna rzecz do upilnowania.
Możesz dodawać do tego dowolne operacje, jakie tylko wymyślisz. Tylko będzie to prowadzić do rozrastania się kodu, dlatego zastanów się dobrze, co Ci jest potrzebne i postaraj się, żeby ten kod nie stracił całkowicie czytelności (wydzielenie subVi, które będą szukały konkretnych operatorów w formule to podstawowa rzecz jaką możesz zrobić).
Możesz dodawać do tego dowolne operacje, jakie tylko wymyślisz. Tylko będzie to prowadzić do rozrastania się kodu, dlatego zastanów się dobrze, co Ci jest potrzebne i postaraj się, żeby ten kod nie stracił całkowicie czytelności (wydzielenie subVi, które będą szukały konkretnych operatorów w formule to podstawowa rzecz jaką możesz zrobić).
