Tablica klastrów
Tablica klastrów
Witam,
Mój problem polega na tym, że mam taką strukturę danych,
http://imageshack.us/photo/my-images/405/struktura.jpg/
która jest bezpośrednio podawana na wykres. Chcę jednak przed samym wykresem mieć możliwość mnożenia lub dzielenia (kręcąc knobem, lub wpisując konkretną wartość) "magnitude". Jak mam wyciągnąć ją z tej paczki, skalować i znów włożyć do tej paczki aby podać wszystko na wykres?
Mój problem polega na tym, że mam taką strukturę danych,
http://imageshack.us/photo/my-images/405/struktura.jpg/
która jest bezpośrednio podawana na wykres. Chcę jednak przed samym wykresem mieć możliwość mnożenia lub dzielenia (kręcąc knobem, lub wpisując konkretną wartość) "magnitude". Jak mam wyciągnąć ją z tej paczki, skalować i znów włożyć do tej paczki aby podać wszystko na wykres?
-
- Posty: 82
- Rejestracja: 26 maja 2009 07:18
- Wersja środowiska: LabVIEW 2012
- Lokalizacja: Sucha Beskidzka
- Kontakt:
Re: Tablica klastrów
Sprawdz czy chodziło ci o to co jest w załaczniku.
Nie zapomnij uzyupełnic danych zebyś nie miał pustej tablicy.
Nie zapomnij uzyupełnic danych zebyś nie miał pustej tablicy.
- Załączniki
-
- Power Spectrum.vi
- Mnożenie wartości Magnitutde przez wartośc w knob
- (9.9 KiB) Pobrany 427 razy
-
- Posty: 82
- Rejestracja: 26 maja 2009 07:18
- Wersja środowiska: LabVIEW 2012
- Lokalizacja: Sucha Beskidzka
- Kontakt:
Re: Tablica klastrów
Albo uzypełnie to za Ciebie. Napisz czy o to ci chodziło.
Vi w zalączniku
Vi w zalączniku
- Załączniki
-
- Power Spectrum.vi
- Załącznik z uzupełnionymi danymi.
- (10.05 KiB) Pobrany 429 razy
Re: Tablica klastrów
Grzesiek080 mógłbyś wrzucić screena kodu? Bo mam LV2010 i nie mogę otworzyć Twojego vi 

-
- Posty: 82
- Rejestracja: 26 maja 2009 07:18
- Wersja środowiska: LabVIEW 2012
- Lokalizacja: Sucha Beskidzka
- Kontakt:
Re: Tablica klastrów
Hej,
W załączniku vi zapisany w wersji 2010.
pozdrawiam
W załączniku vi zapisany w wersji 2010.
pozdrawiam
- Załączniki
-
- Power Spectrum.vi
- (7.42 KiB) Pobrany 428 razy
-
- Posty: 641
- Rejestracja: 31 gru 2010 01:36
- Wersja środowiska: LabVIEW 2017
- Lokalizacja: Katowice
Re: Tablica klastrów
1) Jak już napisał TMa: wewnętrzna pętla jest niepotrzebna i jest bez sensu. LabVIEW dobrze sobie radzi z mnożeniem tablicy przez stałą, nie trzeba go wyręczać ;)Grzesiek080 pisze:Hej,
W załączniku vi zapisany w wersji 2010.
pozdrawiam
2) I można jeszcze użyć In Place Element Struct, to już w ogóle będzie fajnie - załącznik.
- Załączniki
-
- Power Spectrum.vi
- LV2010
- (7.27 KiB) Pobrany 417 razy
Re: Tablica klastrów
Dzięki wszystkim za pomoc
Mix, który wyszedł ze wszystkich wskazówek i podpowiedzi, działa idealnie 


-
- Posty: 82
- Rejestracja: 26 maja 2009 07:18
- Wersja środowiska: LabVIEW 2012
- Lokalizacja: Sucha Beskidzka
- Kontakt:
Re: Tablica klastrów
Fakt petla nie jest potrzebna, ale nie jest bez sensu
.
A co do "in place element structure" to bardzo fajna sprawa.
pozdrawiam

A co do "in place element structure" to bardzo fajna sprawa.
pozdrawiam
- smiga
- Administrator
- Posty: 824
- Rejestracja: 04 paź 2009 12:41
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Słupsk
Re: Tablica klastrów
W tym przypadku zastosowanie struktury In Place nic nie da, więc spokojnie można to zrobić bez niej, czyli kliknąć na nią i Remove...PiDi pisze:
2) I można jeszcze użyć In Place Element Struct, to już w ogóle będzie fajnie - załącznik.
Wrzuć parędziesiąt milionów elementów do tablicy wejściowej i sprawdź czas wykonania.
Podejrzewam, że kompilator przy takim użyciu Bundle/Unbundle By Name sam skorzysta ze wskaźnika do obszaru pamięci, a nie robi dodatkową kopię (po usunięciu In Place, zerknij Tools/Profile/ Show Buffer Allocations... - nie pokazuje żadnej alokacji w tym fragmencie kodu)
Może w starszych wersjach LabVIEW kompilator nie był taki sprytny i ktoś zauważy różnice ...
Podsumowując, to co proponuje Grzesiek080, czyli z dwiema pętlami, z przyczyn podanych powyżej, wykona się w tym samym czasie. Oczywiście z jedną pętlą wygląda ładniej, ale już żółta strukturka w środku nie musi dodawać kwiatków ;)
-
- Posty: 641
- Rejestracja: 31 gru 2010 01:36
- Wersja środowiska: LabVIEW 2017
- Lokalizacja: Katowice
Re: Tablica klastrów
To się zgadza, kompilator zrobi z tego identyczny kod. Ale nie chciałem tutaj narzucać, że In Place zbawi każde spaghetti ;) Po pierwsze, walor poznawczy - mchdbk pewnie o In Place Struct nie słyszał, a może i Grzesiek080 też się dowiedział, a może ktoś jeszcze się dowie. Po drugie - w przypadku prostej tablicy doubli różnicy nie ma. Przy bardziej skomplikowanych strukturach danych i rozbudowanych operacjach różnica może być znacząca. To w sumie też a propos waloru edukacyjnego. No i po trzecie - czysta estetyka i wyrażenie intencji w kodzie. Mi się ta struktura podoba, bo jasno wyraża: "operuję na dokładnie tym kawałku danych, o tym tutaj". To jest bardzo subiektywne odczucie, a więc kwestia indywidualna. Puryści powiedzą, że nie ma kabla = nie widać dataflow... Tylko ja się spierać nie będę, bo z powodzeniem używam i In Place, i zwykłego unbundle/bundle, często jedno obok drugiego ;)smiga pisze: Podejrzewam, że kompilator przy takim użyciu Bundle/Unbundle By Name sam skorzysta ze wskaźnika do obszaru pamięci, a nie robi dodatkową kopię (po usunięciu In Place, zerknij Tools/Profile/ Show Buffer Allocations... - nie pokazuje żadnej alokacji w tym fragmencie kodu)
I tu już mogą przemówić liczby: prosty benchmark, 10 tablic po 200000 elementów, Intel i7 2 GHz. Różnica w czasie wykonania wynosi ok. 8% na korzyść jednej pętli (82 vs 76 ms). Dużo? Mało? Pewnie w tym temacie bez znaczenia, być może w tak prostej operacji w ogóle bez znaczenia. Ale jak kiedyś Grzesiek080 będzie szukał 5 ms w aplikacji real-time, to będzie wiedział, żeby nie nadużywać pętli forsmiga pisze: Podsumowując, to co proponuje Grzesiek080, czyli z dwiema pętlami, z przyczyn podanych powyżej, wykona się w tym samym czasie. Oczywiście z jedną pętlą wygląda ładniej, ale już żółta strukturka w środku nie musi dodawać kwiatków ;)

- smiga
- Administrator
- Posty: 824
- Rejestracja: 04 paź 2009 12:41
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Słupsk
Re: Tablica klastrów
"Walor poznawczy" - jak najbardziej ... i tu szacun Piotruś za wkład w edukację ;)

Sprawdziłem (100 tablic po 1mln elementów) - średnio ok. 30ms z zastosowaniem In Place Structure vs ok. 28,5ms z dwiema pętlami For (i7 2,3GHz ... ale rozpędza się do ponad 3GHz), czyli ciut mniejsze różnice niż u CiebiePiDi pisze: I tu już mogą przemówić liczby: prosty benchmark, 10 tablic po 200000 elementów, Intel i7 2 GHz. Różnica w czasie wykonania wynosi ok. 8% na korzyść jednej pętli (82 vs 76 ms). Dużo? Mało? Pewnie w tym temacie bez znaczenia, być może w tak prostej operacji w ogóle bez znaczenia. Ale jak kiedyś Grzesiek080 będzie szukał 5 ms w aplikacji real-time, to będzie wiedział, żeby nie nadużywać pętli for
