Czy mógłby ktoś na to rzucić okiem ..

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
Awatar użytkownika
serkriz
Posty: 70
Rejestracja: 22 lis 2005 00:00
Lokalizacja: Białystok,Polska Koblenz , Deutschland

Czy mógłby ktoś na to rzucić okiem ..

Post autor: serkriz »

i powiedzieć mi jak moge z tej tablicy pobrać tylko co np.:10 próbke??
W pamięci wewnętrznej mikrokontrolera mam tylko miejsce na 100 bajtów. Jak ustawie 100 próbek (czyli będę miał 100 kolumn=100bajtów) w labview to nie ma z tym problemu ale jest problem z odwzorowaniem przebiegów. Najlepiej jest jak ustawiam np.:60000 próbek (60000 kolumn=60000bajtów) i mam wtedy dobrze odworowane przebiegi. Ale moge tylko co 600-setną kolumne wysłać do mikrokontrolera.

Jak to zrobic???

I jeszcze jedno : jak zatrzymać program po jednym obiegu(tzn.wysle 100 kolumn i się zatrzyma)

Za wszelkie uwagi też będę wdzięczny.
Awatar użytkownika
serkriz
Posty: 70
Rejestracja: 22 lis 2005 00:00
Lokalizacja: Białystok,Polska Koblenz , Deutschland

Re: Czy mógłby ktoś na to rzucić okiem ..

Post autor: serkriz »

Czy wogóle istnieje taka możliwość aby było można z tablicy pobrać co np.: 4 kolumne? Narazie to nie znalazłem bloku który by to robił i nie wiem czy dalej tracić na to czas czy szukać innego rozwiązania.
Awatar użytkownika
wino
Posty: 549
Rejestracja: 23 gru 2005 00:00
Wersja środowiska: Nie mam LabVIEW
Lokalizacja: Kraków

Re: Czy mógłby ktoś na to rzucić okiem ..

Post autor: wino »

proste i nie skomplikowane

zrób sobie z tego subVI'a i już masz bloczek do pobierania co 4 elementu z tablicy
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Czy mógłby ktoś na to rzucić okiem ..

Post autor: jogurt_owocowy »

Jeszcze prostsze i mniej skomplikowane(i bez zagadek) byłoby użycie klocka Decimate Array - działa tylko na tablicach jednowymiarowych.
Jeśli chodzi o tablicę dwuwymiarową to do tego gotowego klocka nie ma, więc trzeba albo wykorzystać sposób z pętlą a w nim użyć Array Subset do pobierania danej kolumy tablicy i wstawić do tablicy wyjściowej za pomocą np. Build Array. Albo można np. wykorzystać Delete From Array do kasowania kolumn niepotrzebnych. Albo jak ktoś jest leniwy i nie chce mu się wstawiać pętli można zrobić Reshape Array, potem Decimate Array, a potem znów Reshape. Sposobów jak widzisz jest mnóstwo. (Wybierz ten najszybszy, a potem napisz na forum który to;) )
Awatar użytkownika
wino
Posty: 549
Rejestracja: 23 gru 2005 00:00
Wersja środowiska: Nie mam LabVIEW
Lokalizacja: Kraków

Re: Czy mógłby ktoś na to rzucić okiem ..

Post autor: wino »

ale zagadka:(
zycie jest pełne zagadek i zagadki sa fajowe
(mozna użyc tez indeks arrej)
mnostwo jest sposobów ale zagadka to zagadka i musi sie pojawic

a taka fajna była, :(
Awatar użytkownika
serkriz
Posty: 70
Rejestracja: 22 lis 2005 00:00
Lokalizacja: Białystok,Polska Koblenz , Deutschland

Re: Czy mógłby ktoś na to rzucić okiem ..

Post autor: serkriz »

Ale jak w bloku Delete From Array ustawić żeby wyrzucało te które nie chcę? Bo tam chyba tylko można ustawić od której kolumny chcemy wyrzucić i ile pod rząd ale jak wyrzucić cztery i jedna zostawić i znowu wyrzucić cztery i jedna zostawić itd...
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Czy mógłby ktoś na to rzucić okiem ..

Post autor: jogurt_owocowy »

Ano trzeba wtedy np. wrzucić bloczek Delete From Array do pętli for takiej jak na rysunku. Zagadka: ile razy musi się obrócić pętla for w tym wypadku? ;)

Pozdrawiam
Awatar użytkownika
serkriz
Posty: 70
Rejestracja: 22 lis 2005 00:00
Lokalizacja: Białystok,Polska Koblenz , Deutschland

Re: Czy mógłby ktoś na to rzucić okiem ..

Post autor: serkriz »

Odpowiedź: tyle razy ile jest ustawione w "co którą kolumne zostawić".

Następny raz : WIELKIE DZIÄ
Awatar użytkownika
Blamek
Posty: 115
Rejestracja: 20 paź 2005 00:00
Lokalizacja: Kraków

Re: Czy mógłby ktoś na to rzucić okiem ..

Post autor: Blamek »

jedna rzecz po rozwage, jesli kasujemy wiersz z tablicy to zmianie ulega CALY obszar pamieci -> powstaje nowa tablica, w nowym miejscu pamieci, kod moze jest krotki i zwiezly, ale moze zajac sporo pamieci (serkriz wspomina, ze ma dosc duze tablice).
Moja propozycja wyglada tak, kryteria wyboru elementow moga byc dowolne, ja chce zwrocic uwage na sposob postepowania z tablicami: tworzymy tablice o zadanych wymiarach = rezerwujemy dlan pamiec, a pozniej tylko wybiorczo zmieniamy zawartosc wczesniej zarezerwowanych obszarow pamieci. Roznica w predkosci jest bardzo duza, nie mowiac juz o obiazeniu pamieci.
Jesli dane maja docelowo trafic na zewnatrz to moze wogle warto zrezygnowac z dopisywania ich do tablicy i wysylac je odrazu wewnatrz petli?
God is dead - Nietsche, Nietsche is dead - God
Awatar użytkownika
wino
Posty: 549
Rejestracja: 23 gru 2005 00:00
Wersja środowiska: Nie mam LabVIEW
Lokalizacja: Kraków

Re: Czy mógłby ktoś na to rzucić okiem ..

Post autor: wino »

chciałem zauważyc ze blamek rozwiazał moja zagadke.

moze nie wykorzystał mojego pomysłu w całości, ale zagadka została rozwiazana!!<brawo>

:)
Awatar użytkownika
Blamek
Posty: 115
Rejestracja: 20 paź 2005 00:00
Lokalizacja: Kraków

Re: Czy mógłby ktoś na to rzucić okiem ..

Post autor: Blamek »

rozumiem ze chodzi o modulo, bo z zamienianiem elementow tablicy chyba jestem oryginalny :P
God is dead - Nietsche, Nietsche is dead - God
Awatar użytkownika
wino
Posty: 549
Rejestracja: 23 gru 2005 00:00
Wersja środowiska: Nie mam LabVIEW
Lokalizacja: Kraków

Re: Czy mógłby ktoś na to rzucić okiem ..

Post autor: wino »

oczywiscie ze o modulo mi chodziło

ale czy tak nie bedzie szybciej petla wykonuje sie jakies 9 razy mniej

wiec oszczednosc czasu jest :)
Awatar użytkownika
serkriz
Posty: 70
Rejestracja: 22 lis 2005 00:00
Lokalizacja: Białystok,Polska Koblenz , Deutschland

Re: Czy mógłby ktoś na to rzucić okiem ..

Post autor: serkriz »

no to bedzie tablica o wymiarze 8x65000 . Ale tylko co 650 kolumna będzie pobierana więc utworzy mi macierz 8x100.

Tak na marginesie: czy jest jakikolwiek sens tego co robie? bo jak pobiore co 650 próbke to otrzymam zupełnie coś innego (przebieg prostokątny przy stosunku sinus do trójkąta 1:50 to dosłownie siekanka)
Awatar użytkownika
Blamek
Posty: 115
Rejestracja: 20 paź 2005 00:00
Lokalizacja: Kraków

Re: Czy mógłby ktoś na to rzucić okiem ..

Post autor: Blamek »

wino: faktycznie wykombinowales ze jest szybciej, choc tu juz nie wytargujesz wiele bo operacja ta nie jest az tak czasochlonna (najlepiej zapusc profilera i zobacz).
Ale i tak pochwalam :)
God is dead - Nietsche, Nietsche is dead - God
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Czy mógłby ktoś na to rzucić okiem ..

Post autor: jogurt_owocowy »

W porównaniu z waszymi pętlami moja jest dość niepozorna ale działa git ;)
W prostocie siła: działa ciut szybciej, niż ta z rysunku Blamka(co 10 kolumna, tablica I32, 2000*2000).
Jedyny zgrzyt to fakt, że nie da się programowo ustawić co którą kolumnę zostawić(albo o tym nie wiem).
A jak chcesz sobie sprawdzić czy jest sens tego co robisz to najlepiej zrób to w Matlabie. Tam pobranie co np. 10 kolumny to napisanie Tablica=Tablica(:,1:10:65000); więc roboty z tym masz niewiele i zaraz zobaczysz czy gra jest warta świeczki.

Pozdrawiam(:
ODPOWIEDZ