Rozumiem, że jeżeli tablica zawiera {1,2,3,4}, to po przesunięciu cyklicznym ma zawierać {4,3,2,1}, a tab. {1,2,3,4,5}: {5,4,3,2,1}. Przedstawiam kod napisany pod Dev-C++. #include <iostream> #include <conio.h> #include <math.h> using namespace std; main() { const int N=7; int t[N]={1,2,3,4,5,6,7 }; int...
Niestety tak prosto nie jest. Zasadniczo przy tych rozważaniach można operować na ułamkach albo na liczbach całkowitych. Jeśli mówimy o tych pierwszych, to wtedy Twój krok dX jest ułamkowy i całą filozofią jest wyznaczenie X0 - jako całkowitej wartości X - i X1 - jako wartości o 1 większej o X0 (z uwzględnieniem tego co stanie się na końcu tablicy)....
OK, już piszę jak to działa. W moich programach pod mikrokontrolery format tablicy ze znakami jest taki: na początku, pod offsetem '0' wartość która informuje o wysokości czcionki (czyli ile znaków składa się na jedną czcionkę. Pod offsetem '1' znajduje się dana informująca o szerokości znaku, i dalej wartości wiersz po wierszu. Tych danych jest dokladnie...
załóżmy N=8 http://obrazki.elektroda.net/65_12469953... Mój algorytm ...i wtedy mnożąc jest przez kąt fazowy otrzymujemy takie same operacje jak w DFT(N) miałem na myśli że teoretycznie to jest to samo bo licząc DFT mamy 8 mnożeń zespolonych, a licząc w FFT każdą próbkę oddzielnie mamy podobną liczbę mnożeń tylko że wcześniej wykonane mnożenia...
DEC 1 jest w złym miejscu. Przesuń przed *D i będzie OK.
Dlaczego przesuwasz w drawgraph a nie odrazu w ifie? Pierwsze powinieneś przesunąć a potem dodać na koniec.
Daj nowy region pamięci tylko na przerwania, Flash zaczniesz wyżej. Ja dałbym nawet nowy region na ów eeprom. mógłby być programowany wartościami domyślnymi, albo po prostu przesuń operator . za przerwaniami, choć to mało eleganckie.
Najprostsze rozwiązanie. Tworzysz w pamięci programu tablicę funkcji sinus (na 8 bitach). Tworzysz trzy wskażniki do danych w tablicy, przesunięte o 1/3 rozmiaru tablicy. Ze zmienną częstotliwością (zmienianą np. przerwaniem od timera) odczytujesz wartości z tablicy i wystawiasz na trzy porty. Zwiększasz wskaźniki. I to chyba cały algorytm
Może lepiej byłoby zrobić sumę 8 lub 16 elementów z tablicy i zamiast dzielić przez 10 ( co zajmuje kilkaset operacji procesora) podzielić przez przesunięcie
Nigdzie nie ustawiasz ani x, ani y, poza początkiem, więc zawsze oba są 0. Po przyciśnięciu przycisku nadpisujesz wartość 1 w polu [0,0] zerem z pola obok. Przepisanie musisz mieć odwrotne, np.: [x+1,y] := [x,y], a potem przesunąć wartość x. Dodatkowo przycisku muszą Ci wygenerować impuls, żeby przesunięcie wykonało się tylko raz. Chyba, że chcesz,...
Możesz napisać prostą funkcję wyciągającą dowolny bit... Parametrem może być nawet numer bitu z całej tablicy (licząc od pierwszego). Tworzysz maskę 1b przesuniętą w lewo o numer_bitu modulo 8. Mnożysz logicznie razy numer_bitu dzielony (całkowicie) przez 8. Jeśli wynik>0 to znajduje się tu bit 1.
Stwórz tablicę za pomocą: Dim Zmienna(5) As Byte 'lub Word, Integer, Long, Single, Double... Przed zapisem aktualnej wartości do Zmienna(1), przesuń wartości z 1, 2, 3, 4 o jeden indeks (na 2, 3, 4, 5). Pamiętaj aby zrobić to tak, by nie "zamazać" wartości przy przesuwaniu. Potem zapisujesz aktualną wartość do Zmienna(1) i masz komplet, który...
Z tym że uciekają mi tutaj 2 ostatnie zmienne, da się coś z tym zrobić? Przesuń tablice. Wypełnij reszte jakąś wartością(0,random). Wyśweitl tablice.
Tak na początek: 1. long to raptem 32-bitowa zmienna. Jako, że w ogóle pracujemy w zbiorze liczb dodatnich, to od razu bym skorzystał z unsigned, co spowoduje podwojenie dostępnego zakresu. 2. Zakres unsigned long to 4G, zatem pomieści on śmiało liczby do fib(47). Ale tworząc tablicę, której indeksy są wartościami, a wartością - tylko proste tak/nie,...
Zauważ, że tutaj: int ile_znakow = 0; unsigned char *cT1 = new unsigned char [ile_znakow]; unsigned char *cT2 = new unsigned char [ile_znakow]; alokujesz puste tablce! ile_znakow = z1 - pocz; // wyznacza długość i 1 tablicy cT1 // tutaj przypisuje odpowiednie fragmenty do dynamicznych tablic char // i konwertuję na int cT1[ile_znakow+1]...
nie możesz przesuwać elementów tablicy. Musisz wziąć wskaźnik na typ słowny (dwa bajty) i przypisać do niego adres elementu tablicy (czyli de facto adres tablicy + przesunięcie) i dopiero na takiej wartości dokonać przesunięcia. Inaczej kompilator widzi, że pracujesz ze słowem i nie pozwoli wyjść "poza" element tablicy. Przesunięcie musi być zrealizowane...
A skąd mamy wiedzieć jaką ma wartość ADC_CDR_DATA1 i ADC_CDR_DATA2? Bo jeśli ADC_CDR_DATA1 to 0xffff, a ADC_CDR_DATA2 to 0xffff0000, to wszystko by się zgadzało - samo maskowanie Ci nic nie da, musisz jeszcze przesunąć wynik. Z drugiej strony czemu po prostu nie użyjesz WŁAŚCIWEGO typu dla tablicy, czyli uint16_t a nie uint32_t?
(Baza Zielone) 1 - nie do końca wiem czy o to Ci chodzi (próbowałem zrozumieć co chcesz osiągnąć - możliwe, że właśnie to co w załączonym pliku). Najprościej będzie posortować po pierwszej kolumnie tak aby puste wartości (matki) zostały na końcu i wówczas do kopiowania danych używasz formuły: 1060144 (Baza Niebieskie) 2 - już napisałem powyżej. Robisz...
mozesz mi tylko wytlumaczyc jak dziala ta petla while a raczej to w niej bo jakos nie moge tego rozszyfrowac :] Moze w ten sposob bedzie bardziej czytelne: while(rozmiar >= (1 << i)){++i;} (1 << i) to po prostu przesuniecie bitowe (przesuniecie "1" o i bitow w prawo). Aby wiedziec, ile bitow wystarczy do zapisania...
https://obrazki.elektroda.pl/3255206700_... Układ Melexis MLX90640 to scalona macierz termoelementów (termostosów) o rozdzielczości 32 x 24. Każdy z tych elementów pozwala na zdalny pomiar temperatury, a razem tworzą prostą kamerę do obrazowania termicznego. Moduł posiada dosyć dobrą rozdzielczość przestrzenną i temperaturową. Sparkfun...
Prawidłowo - po wpisaniu '7' w AL (czyli dwóch ostatnich rejestru AX) znajdzie się 37h. Do BL przenosisz wiec po odjęciu 7. Tyle, że cały kod jest przygotowany do pracy z większymi wartościami, niż jedna cyfra, więc przesuniecie BL w prawo sprawi, że będzie tam 0. To pierwsza część. Dopiero kawałek dalej jeszcze raz przenosisz do BL z AL i tym razem...
Po łebkach opisany algorytm... 1.Rysowanie wektora robisz tak a)rysujesz kreskę b)rysujesz trójkąt na końcu (pozycję obliczasz z wykorzystaniem zamiany wartości x/y c)wypełniasz trójkąt czarnym kolorem d)jeżeli jest włączona opcja przesuwania wektora to dodatkowo rysujesz 3 kólka (na początku, na środku do przesuwania całego wektora i na końcu) 2.Dane...
Owszem, optymalizator zna takie przypadki i wygeneruje super nieoptymalny kod: będzie przesuwać jedynkę w lewo jedyną możliwą instrukcją (przesunięcie w lewo) tyle razy, ile wynosi wartość zmiennej _bit. Niestety, ale jeśli zmienna _bit nie jest znana w czasie kompilacji, to w przypadku AVR'ów kompilator rozwija przesuwanie o zmienną w pętlę z przesuwaniem...
Witam, jestem początkujący i mam pewien problem ;D Chciałem się zapytać czy da się mając tablicę Dwuwymiarową np. [syntax=php]$Tablica[1][1]=102; $Tablica[1][2]="wartosc 1"; $Tablica[1][3]="costam"; $Tablica[2][1]=130; $Tablica[2][2]="wartosc 2"; $Tablica[2][3]="asd"; $Tablica[3][1]=29; $Tablica[3][2]="wartosc 3"; $Tablica[3][3]="h3h3";[/syntax] itd......
zamiast aproksymowac wielomianem mozesz tez stworzyc tzw. Look Up Table (LUT) - tablice zapisana w pamieci programu (jest jej pod dostatkiem w A128), tablica bedzia miala tyle wartosci, ile moze przyjac ADC dla pomiarow z Sharpa, u mnie od okolo 60-560. Wartosc ADC bedzie indeksem (ew. przesuniesz o stala wartosc zeby wyeliminowac nieuzywane wartosci...
Cześć, co prawda nie mam żadnego doświadczenia z opisyswaną przez Ciebie kontrolką, ale ogólnie to proponuję zrobić tak: Nie odświeżaj calego obrazu, tylko kiedy krzyż pojawia się nad jakimś obszarem, zapamiętaj w tablicy, wartości kolorów pikseli znajdujących się "pod" krzyżem, kiedy użytkownik ruszy myszą i krzyż się przesunie, na starym miejscu pobytu...
Poprawiłem kod według podanych porad (zastosowałem instrukcję switch oraz usunąłem zbędne volatile ze zmiennych), zmodyfikowałem również funkcję konwersja tak żeby wykorzystywała operację modulo. Ponadto Microsoft Copilot zaproponował użycie struktur do zwracania kilku wartości z funkcji zamiast wskaźników. [syntax=c]#include <iostream> #include...
Ad 1. Błąd nazewnictwa, lub błąd interpretacji. W tym przypadku height zawiera informację o ilości wykorzystanych linii dla danego znaku w GLCD. Jedna linia to 8bitów - wspomniana organizacja pamięci sterownika. Nie robiłem nakładki z algorytmem umożliwiającym rozpoczęcie pisania dowolnej wielkości znaku na dowolnym pikselu z wielu powodów. Priorytet...
Chodzi o linijki: ldi ZH, high(znaki << 1) ldi ZL, low(znaki << 1) etykieta znaki przechowuje adres początku tablicy w pamięci Flash, ale ta pamięć ma organizację słów 16-bitowych! Natomiast instrukcja LPM ładuje do rejestru wartość wskazaną przez Z, ale najmłodszy bit tego wskaźnika określa którą część 16-bitowego słowa...
Witam Żeby dowiedzieć się jakie jest przesunięcie między prądem a napieciem sieci nie musisz wcale liczyć FFT. Proponuje następujące rozwiązanie (na przykładzie): 1. Jeśli znasz dokładną częstotliwość napięcia sieci, wygeneruj sobie tablicę sin[] i cos[], gdzie w sin[] powinna się znaleźć funkcja sinus o częstotliwości równej aktualnej częstotliwości...
ale dla mnie wygląda podejrzanie wyrównywanie do całkowitej wyniku sin() i cos(). Tu wzorowałem się na kodzie ze strony http://www.dspguide.com/graphics/T_12_4.... . Tam wynik także jest zamieniany na wartość całkowitą poleceniem CINT - ogólnie obliczenia są prowadzone z użyciem zmiennych całkowitych. Chyba nie - nie wiem, co to za dialekt Basica,...
Pewnie że sie da...kwestia jest taka że podział Ci sie przesunie (tak jak piszesz). Sprawdź jakie masz wartości elementów i odczytaj z tablic jaki Ci wyjdzie z tego podział...będziesz wiedział czy jest sens tego rozwiązania.
Witam. Jestem początkujacy w programowaniu w środowisku Delphi więc potrzebuje Waszej pomocy w napisaniu prostego programu. Zadanie tak brzmi: Mając dane tablice A 1..n złożoną z integer dokonać przesunięcia cyklicznego jej wartości w prawo o k pozycje. Bardzo będe wdzięczny Wam za pomoc. Pozdrawiam.
Popełniasz błąd logiczny. Porównujesz zawartość tablicy do zera a przecież wyświetlane zero nie ma w tablicy wpisanej wartości zero a 192 jak sądzę. Możesz dopisać sobie na początku tablicy 0 i wtedy zadziała ale będziesz musiał przesunąć wskaźnik w starcie o jedną pozycję żeby wyświetlać o drugiego elementu w tablicy.
Tak problem został rozwiązany. Zamiast tworzenia tablicy o wielkości 6*Ilość_znaków - w której są przetrzymywane wartości wierszy danej kolumny litery. Stworzyłem Tablicę 30-elementową do której wpisywana jest tylko jedna litera w jednej pętli (od 30-25 komórki tablicy - tak aby jej nie było widać na matrycy), w kolejnej pętli litera jest przesuwana...
Musisz albo dodać 3 x DAC do procesora, albo wygenerować 3xPWM (o rozdzielczości > 1024) i odfiltrować to dolnoprzepustowo. Do tego dojdzie jeszcze wzmacniacz, żeby uzyskać amplitudę 10V. Przesunięcie o 120° to tylko kwestia odpowiedniego indeksowania tablicy z wartościami chwilowymi sinusa.
po prostu na początku do zmiennej suma o wartości 0 dodaje resztę z dzielenia podanej liczby i w pętli for 32 razy przesuwać bity i na bierząco dodawać suma=suma+przesunięcie. Tak?
Mam kilka pytań: 1. Mam tablicę aa[100][16] i czy da się do niej przepisać tablicę bb[1600] aby komórki zostały po kolei przepisane ? 2. Czy można przypisać przez wskaźnik tablicę, tak aby przesunąć komórki o jedną do przodu i do pierwszej wstawić jakąś wartość ? W asemblerze byłoby to proste, ale jak to zrobić w C ?
Odnośnie wprowadzania liczb proponuję takie rozwiązanie: 1) Zdefiniuj ile cyfr możesz maksymalnie wprowadzić (np. 6). Stwórz zmienną tablicową typu uint8, o rozmiarze ilości cyfr, np. [syntax=c]uint8_t buffLiczba[6];[/syntax] Przy wejściu do trybu wprowadzania liczby zainicjalizuj tablicę wartościami, które nie reprezentują żadnej cyfry, np. 0xff; 2)...
Wiem, że metoda kopiuj wklej niczego nie zrobię, ani się nie nauczę. Nie na tym rzecz polega. Co do sugestii, sprawdzałem już wpisywanie ręcznie jakiejś wartości do zmiennej temp, oraz do tablicy, działa. W przypadku twojego wpisania danych na tablicy, wyświetla się 25, tak z resztą jak powinno być bo 0x01 to jest 00000001 a 0x09 to 0x10010000. Czyli...
Sorki, że milczałem do teraz, ale byłem "trochę" zajęty ;) W przykładzie wstawianie ramki poniżej tej, w której naciśnięto przycisk. Uwagi wymaga sposób wyliczania wartości zmiennych. W arkuszu ramka ma wysokość 4 wierszy, jest 1 wiersz nagłówkowy. Nr wierszy, gdzie nastąpi wstawianie nowych dla następnej ramki to: 6, 10, 14, itd Kluczowe jest wyliczenie...
W silnikach tej klasy odchyłki wymiarowe wału korbowego są szacowane na 0,02-0,03 mm (dotyczy to miejsc pod łożyska ślizgowe). Zatem wg literatury odchyłka większa o rząd wielkości powinna dyskwalifikować ten wał. Życie jednak niesie wiele niespodzianek i wystarczy, że np. masz z jednej strony bardziej zeszlifowany nóż i w związku z tym suma mas po...
Dzięki za odzew. Niestety wiem tyle co podałem w pierwszym poście. Modbus jako taki nie jest dla mnie problemem (pisałem własne programy na avr z obsługą modbus rtu) Producent kotła nie przyznaje się do implementacji modbusa i nie udostępnia żadnych danych. Pytam czy ktoś próbował dogadać się z tym kotłem ? Może ktoś ma jakieś informacje o protokole...
ok, dzięki, już oba śmigają.. a mam jeszcze jedno pytanie, tym razem odnośnie destruktora. gdy go nie dam jest ok, ale gdy jest zdefiniowany w klasie to dziwne rzeczy dzieją się po przeładowaniu operatora +. Tablica obiektu wynik jest wypełniona po części jakimiś śmieciami, pisze po części, bo od komórki [2][2] są już dobre wartości.. wygląda na to,...
To nie fazy PWM powinny być przesunięte, ale wartości do nich wpisywane. Jeśli np. cały okres przebiegu sinusoidalnego mieści się w tablicy 300-elementowej (t=0..299), to do OCR1A powinien być zapisywany element SINE[t+0] , do OCR1B - SINE[(t+100)%300], a do OCR1D - SINE[(t+200)%300].
Hej! Wiem, że 's' źle pokazuje, bo drukuję sobie jego wartość po wejściu do funkcji. Problem zaczął się wyjaśniać. Zauważyłem, że wartość tego wskaźnika w funkcji jest przesunięciem poprawnej wartości... Jakbym to już gdzieś widział.... Otóż adres tablicy, którą przekazywałem do funkcji nie był podzielny przez 4. Dlaczego? Tablica umieszczona była na...
Rozumiem, że kompletna składnia wygląda mniej więcej tak(znalazłem to gdzieś w google)?: atoi(text.substr(offset + 47, 1).c_str()), Czy jest gdzieś jakiś podręcznik,strona itp.(niestety znajduję tylko programy z użyciem tej składni bez wyjaśnień) który wyjaśnia tę składnię? Te dwie wartości liczbowe to miejsce położenia litery a w wyrażeniu "arg2134"...
Dla przesunięć będących stałymi dostęp przez pola bitowe i przez przesunięcia powinien generować identyczny kod. Natomiast jeśli przesunięcie jest zmienną to o ile chodzi tylko o jeden bit to najszybciej zastosować look-up table - zajmie to tylko 8 bajtów, a konwersja bit - maska to po prostu odczytanie wartości z tablicy.
Witam, Ostatnio natrafiłem na problem podczas konwersji pliku *.elf do pliku *.bin z wykorzystaniem narzędzia arm-none-eabi-objcopy. W niektórych przypadkach (w zależności od zawartości kodu) wygenerowany plik *.bin jest wewnętrznie przesunięty o wartość 0x4 co skutkuje błędnym działaniem programu po umieszczeniu go w pamięci nieulotnej (QSPI Flash)....
To się do tego totalnie źle zabierasz. Po pierwsze po co chcesz liczyć sinusy tych samych wartości w kółko? Nie prościej je stablicować we FLASH? Nawet jeśli sobie wymyślisz, że liczysz z dokładnością do stopnia to ci to zajmie jakieś 720 bajtów bez optymalizacji, czyli tyle ile zajmuje funkcja licząca sinus, tyle, że wynik otrzymasz w 2 taktach CPU....
przesunąć tablica bascom przesunąć tablica przesunąć fazowy
migać kontrolka świeca atmega odbiornik podczerwień pływający matryca
naprawa udaru makita bateria milwaukee
Jak sprawdzić rok produkcji telefonu? Kod usterki P2562 - Czujnik położenia sterowania doładowaniem turbosprężarki