Jak zapamietac posrednie wyniki z tablic?

Jeśli masz coś do powiedzenia w sprawie LabVIEW napisz. Tutaj są tematy, których nie można uściślić do innych działów.
bozydar
Posty: 6
Rejestracja: 28 gru 2006 00:00
Lokalizacja: Zapsince dolne

Jak zapamietac posrednie wyniki z tablic?

Post autor: bozydar »

Witam wszystkich. Mam taki problem:
1. Mam wektory X i Y (na poczatku zadeklarowane np. w jakiejs tablicy)
2. Mnoze skalarnie: X*Y,
3. Wynik jest argumentem funkcji Z = f(X*Y)
4. Zmieniam wektor Y (ten z p-tu 1) (uzywajac wyliczonego Z, ale to akurat nieistotne).
5. Ten zmieniony wektor Y wstawiam do iloczynu skalarnego z p-tu2 i dalej zgodnie z kolejnoscia.

Petla powinna byc wykonana okreslona liczbe razy (ale to juz nie stanowi problemu:)). Cokolwiek nie wymysle to zawsze dojde do jakiejs sprzecznosci: albo musze zapisac to co jest tylko do odczytu, nie zgadzaja sie kierunki przesylania danych itp. Usilowalem znalezc jakis "bloczek" do zapamietania wartosci tablicy - nic z tego. Czy ktos moze mi podrzucic jakis zgrabny sposob wyjscia z tej sytuacji?? Z gory dziekuje.
...a jusci krowa co rycy duzo to mlika malo daje.
bogdani
Administrator
Posty: 1315
Rejestracja: 30 lip 2003 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Ruda Śląska
Kontakt:

Re: Jak zapamietac posrednie wyniki z tablic?

Post autor: bogdani »

Witaj

Może najlepszym wyjściem będzie pokazanie twojego kodu, łatwiej będzie znaleźć błąd.

Spokojnie możesz załączyć plik VI do wiadomości na forum.

bogdani
Ktoś ci pomógł na forum? Podziękuj dając pochwałę.

Obrazek Obrazek Obrazek
Awatar użytkownika
wino
Posty: 549
Rejestracja: 23 gru 2005 00:00
Wersja środowiska: Nie mam LabVIEW
Lokalizacja: Kraków

Re: Jak zapamietac posrednie wyniki z tablic?

Post autor: wino »

Może tak
bozydar
Posty: 6
Rejestracja: 28 gru 2006 00:00
Lokalizacja: Zapsince dolne

Re: Jak zapamietac posrednie wyniki z tablic?

Post autor: bozydar »

Od kilku dni uzywam Labview i jeszcze funkcjonuja u mnie schematy myslowe z C++ i pewnie to jest najwieksza przeszkoda.
Glowne problemy przedstawilem w pliku ponizej (test.vi).
1.Jak zmienic tablice (wektro) Y uzywajac wyjscia?. (problem z polaczeniem)
2.Jesli zainicjuje tablice wartosciami losowymi to za kazdym nast. cyklem wartosci Y beda sie zmieniac przypadkowo, wiec w drugim cyklu (zamiast losowych)bede juz musial podstawic (jako stale), wartosci wylosowane w pierwszym cyklu. Jedyny sposob wykonania tego to "shift register" i np. wstawienie f-cji losujacej do struktury case? Nie ma latwiejszej metody? Jakis jeden "bloczek" zapamietujacy wartosc tablicy moglby zastapic spora "platanine"...
W pliku pokazalem tylko "ramy" problemu, zeby zilustrowac moje pytania.
...a jusci krowa co rycy duzo to mlika malo daje.
Awatar użytkownika
wino
Posty: 549
Rejestracja: 23 gru 2005 00:00
Wersja środowiska: Nie mam LabVIEW
Lokalizacja: Kraków

Re: Jak zapamietac posrednie wyniki z tablic?

Post autor: wino »

Ad.1 Nie da się tego zrobić.
Ad.2 http://www.labview.pl/Content/pid=8/page=3.html w tym linku jest opisane działanie Shift Register'a
Operator rejestru przesuwnego służy do przenoszenia danych pomiędzy kolejnymi iteracjami pętli for i while. To oznacza, że zapamiętuje wynik z poprzedniej iteracji. Wystarczy go w twoim przypadku zainicjować wartościami losowymi, a w kolejnych iteracjach na nim bedą się pojawiały wartości z poprzedniego obrotu pętli.
bozydar
Posty: 6
Rejestracja: 28 gru 2006 00:00
Lokalizacja: Zapsince dolne

Re: Jak zapamietac posrednie wyniki z tablic?

Post autor: bozydar »

>Operator rejestru przesuwnego służy do przenoszenia danych pomiędzy >kolejnymi iteracjami pętli for i while. To oznacza, że zapamiętuje wynik z >poprzedniej iteracji. Wystarczy go w twoim przypadku zainicjować >wartościami losowymi, a w kolejnych iteracjach na nim bedą się pojawiały >wartości z poprzedniego obrotu pętli.
...ale to chyba nie rozwiaze problemu, bo potrzebne jest cos takiego:
1. wyliczam wartosc losowa (np. 6)
2. mnoze te losowa szostke z jakams inna dowlona liczba.
3 wynik mnozenia musze dodac do wczesniej wylosowanej szostki - i tu jest problem, bo 6 nie jest pamietane tylko jest juz wstawiona nastepna wylosowana liczba.
Wpadlem na pomysl i przetestuje zamiane wartosci losowej z wyjsciem Shift Registera w nastepnym cyklu petli. Dam znac czy cos mi z tego wyszlo...
...a jusci krowa co rycy duzo to mlika malo daje.
Awatar użytkownika
Mikrobi
Posty: 1210
Rejestracja: 08 paź 2003 00:00
Wersja środowiska: LabVIEW 2017

Re: Jak zapamietac posrednie wyniki z tablic?

Post autor: Mikrobi »

Shift Register możesz rozciągnąć - sprawdź jak to dziala na jakimś prostym przykładzie np. z dodawaniem.
W rozciągniętym z lewej strony SR bedziesz mial kolejne wartości z poprzedniej, 2 wstecz, 3 wstecz iteracje itd.

Jeśli jednak potrzebujesz pobierać pamietane wartości według jakiegoś parametru, to powinieneś zastosować tablicę z dodawanymi elementami, które potem według potrzeby bedziesz indeksował.
pozdrawiam
Mikrobi

LabVIEW Champion, CLD, CPI
bogdani
Administrator
Posty: 1315
Rejestracja: 30 lip 2003 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Ruda Śląska
Kontakt:

Re: Jak zapamietac posrednie wyniki z tablic?

Post autor: bogdani »

Ten twój problem dostępu do wcześniejszych danych rozwiązuje Shift Register przecięgnięty w dół (tak jakby miał kilka wejść), wtedy z każdego takiego stapnia masz liczbę z wcześniejszej iteracji.

bogdani

Edit: Byłeś szybszy, ale skoro są dwie podobne odpowiedzi, to ona musi być dobra :-)
Ktoś ci pomógł na forum? Podziękuj dając pochwałę.

Obrazek Obrazek Obrazek
bozydar
Posty: 6
Rejestracja: 28 gru 2006 00:00
Lokalizacja: Zapsince dolne

Re: Jak zapamietac posrednie wyniki z tablic?

Post autor: bozydar »

...albo problem przedstawie w ten sposob:
Jak w labview7.1 wykonac cos takiego:

double w[5];
double x[5] = {1,2,3,4,5};
double pom=0;
int i,j;

for(i =0; i<=4; i++)
____w = random();_//na poczatku tylko raz przypisane wartosci losowe dla tablicy w[]

for(j=0; j<=10; j++) {_ //petla powtorzona np. 10 razy (lub dowolna ilosc)
____for(i=0; i<=4; i++)
________pom += w*x;_//wartosc pomocnicza = iloczyn skalarny w[] i x[]
____for(i=0; i<=4; i++)
________w = w - pom; //ze szczegolnym uwzglednieniem tej linijki: korekta wektora w[] za pomoca zmiennej pom.
}
...bede bardzo wdzieczny za pomoc...
P.S. Przepraszam za formatowanie, ale znikaja spacje.
Ostatnio zmieniony 28 gru 2006 18:43 przez bozydar, łącznie zmieniany 3 razy.
...a jusci krowa co rycy duzo to mlika malo daje.
Awatar użytkownika
Mikrobi
Posty: 1210
Rejestracja: 08 paź 2003 00:00
Wersja środowiska: LabVIEW 2017

Re: Jak zapamietac posrednie wyniki z tablic?

Post autor: Mikrobi »

zaiste :)

aczkolwiek jeśli podług parametru...;)
pozdrawiam
Mikrobi

LabVIEW Champion, CLD, CPI
PMaj
Posty: 231
Rejestracja: 04 sty 2004 00:00

Re: Jak zapamietac posrednie wyniki z tablic?

Post autor: PMaj »

Witam

Da sie to zapisac w LabVIEW jak ponizej.

pzdrv
Nie jestem leniwy
Mam zawyżone wymagania motywacyjne
bozydar
Posty: 6
Rejestracja: 28 gru 2006 00:00
Lokalizacja: Zapsince dolne

Re: Jak zapamietac posrednie wyniki z tablic?

Post autor: bozydar »

Witam wszystkich. Caly czas to nie jest to. Z ukladu ktory przeslal PMaj dla przykladowych danych:
x[4] = {1,2,3,4}
w[4] = {6,7,8,9} i dla czerech "obrotow" glownej petli otrzymujemy:
w pierwszej glownej iteracji:w[] = {-74,-73,-72,-71}
w drugiej glownej iteracji:w[] = {-154,-153,-152,-151}
w trzeciej glownej iteracji:w[] = {-234,-233,-232,-231}
w czwartej glownej iteracji:w[] = {-314,-313,-312,-311}

...a powinno byc:
w pierwszej glownej iteracji:w[] = {-74,-73,-72,-71}
w drugiej glownej iteracji:w[] = {566,567,568,569}
w trzeciej glownej iteracji:w[] = {-4474,-4473,-4472,-4471}
w czwartej glownej iteracji:w[] = {35206,35207,35208,35209}

Caly problem polega na tym, ze w C mozna zapisac instrukcje w = w + 1 (w ogolnosci nieprawdziwe jako wyrazenie matematyczne), natomiast, w "logicznym do bolu" labview, bez jakiegos rejestru (innego od shift registera), na obecna chwile nie widze jakiejs zgrabnej metody...ale zawsze moge sie mylic....
...a jusci krowa co rycy duzo to mlika malo daje.
Awatar użytkownika
Mikrobi
Posty: 1210
Rejestracja: 08 paź 2003 00:00
Wersja środowiska: LabVIEW 2017

Re: Jak zapamietac posrednie wyniki z tablic?

Post autor: Mikrobi »

Feedback Node?
pozdrawiam
Mikrobi

LabVIEW Champion, CLD, CPI
Awatar użytkownika
wino
Posty: 549
Rejestracja: 23 gru 2005 00:00
Wersja środowiska: Nie mam LabVIEW
Lokalizacja: Kraków

Re: Jak zapamietac posrednie wyniki z tablic?

Post autor: wino »

wystarczy do tego Shift Register moim zdaniem i to będzie wyglądać o tak:
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Jak zapamietac posrednie wyniki z tablic?

Post autor: jogurt_owocowy »

> Caly problem polega na tym, ze w C mozna zapisac instrukcje w = w + 1
A jak to się robi w LV?

Pamiętam, że jak parę lat temu zaczynałem swoją zabawę z LV to dla mnie też była to pierwsza kłoda pod nogami:)
A jak ją obejść to już koledzy napisali.

Pozdrawiam
ODPOWIEDZ