Wielkokrotna funkcja CASE lub IF

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
teslabox
Posty: 80
Rejestracja: 24 mar 2010 15:27
Wersja środowiska: LabVIEW 2010

Wielkokrotna funkcja CASE lub IF

Post autor: teslabox »

Witam!

Proszę o pomoc w utworzeniu struktury algorytmu wybierającego.
Program ma polegać na przypisaniu jednej wartości (wejściowej) (liczba typu "0.000") do konkretnego przedziału (jednego z trzynastu) i wystawić na wyjście inną liczbę (stałą i przypisaną tylko temu przedziałowi) (liczba typu "0.000").
W skrócie działanie algorytmu sprowadza się do: zobacz do którego przedziału należy pomiar i podaj przelicznik dla tego przedziału.
Próbowałem z wbudowaną funkcją CASE, ale ona nie umożliwia wielokrotnego wyboru. Jak to sprytnie rozwiązać?
Awatar użytkownika
m3wm3
Posty: 22
Rejestracja: 10 gru 2009 22:33
Wersja środowiska: LabVIEW 8.6

Re: Wielkokrotna funkcja CASE lub IF

Post autor: m3wm3 »

Witaj,

co powiesz na takie rozwiązanie?
Załączniki
JPG
JPG
case.vi
VI
(7.78 KiB) Pobrany 289 razy
Awatar użytkownika
Pitol
Moderator
Posty: 984
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

Re: Wielkokrotna funkcja CASE lub IF

Post autor: Pitol »

m3wm3 zakładasz, że przedziały są połączone, tzn. 0-5, 5-10, itd. A co jeśli chciałby mieć różne przedziały, np. 0-5, 13-17, 145-200....

A teraz odpowiedź dla teslabox:
Do struktury CASE nie można podpinać liczb typu double czy single. W zasadzie można, ale zostanie przeprowadzona konwersja do I32 (chyba).

Jeśli już chciałbyś podpinać takie liczby do wejścia struktury CASE to najlepiej jest je... pomnożyć :) Tak, żeby uzyskać wartość całkowitą. Zakładasz, że maksymalnie masz 3 liczby po przecinku więc mnożysz przez 1000 i konwertujesz do I32. Potem już możesz sobie w strukturze CASE tworzyć przedziały jakie chcesz.
case.PNG
case.PNG (13.83 KiB) Przejrzano 7448 razy
ObrazekObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj
Awatar użytkownika
m3wm3
Posty: 22
Rejestracja: 10 gru 2009 22:33
Wersja środowiska: LabVIEW 8.6

Wielkokrotna funkcja CASE lub IF

Post autor: m3wm3 »

Rzeczywiście - mój błąd :(

Za to przy okazji dowiedziałem się o zakresach w CASE, także dzięki :D
Awatar użytkownika
Pitol
Moderator
Posty: 984
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

Re: Wielkokrotna funkcja CASE lub IF

Post autor: Pitol »

Żaden błąd... po prostu inne podejście do problemu ;) Wszak nie do końca sprecyzowane było pytanie.
ObrazekObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj
Awatar użytkownika
wino
Posty: 549
Rejestracja: 23 gru 2005 00:00
Wersja środowiska: Nie mam LabVIEW
Lokalizacja: Kraków

Re: Wielkokrotna funkcja CASE lub IF

Post autor: wino »

Mi się wydaje, że ten case tu jest w ogóle nie potrzebny i tylko zagmatwał problem. Podejście numer 1 było lepsze, pętla FOR i sprawa jest jasna. A co do tych różnych przedziałów to wystarczy skorzystać z klastra o tak:
Załączniki
Select.png
Awatar użytkownika
Pitol
Moderator
Posty: 984
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

Wielkokrotna funkcja CASE lub IF

Post autor: Pitol »

Faktycznie lepsze rozwiązanie...
ObrazekObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj
ODPOWIEDZ