Zaloguj się
Blog na Matlablog
Forum polskich użytkowników
 
UŻYTKOWNICY GRUPY PROFIL Zaloguj się, by sprawdzić wiadomości FAQ
 



Napisz nowy temat     Odpowiedz do tematu Zobacz poprzedni temat :: Zobacz następny temat

CA czy jest możliwość utworzenia w matlabie Idź do strony 1 2  Następny
Forum MATLAB Strona Główna-> Biologia komputerowa i systemy medyczne
Post Wysłany: 9 Października 2006, Pon 7:31 pm Temat postu: CA czy jest możliwość utworzenia w matlabie Odpowiedz z cytatem
 
AUTOR:
guzalki
Początki pisania


Dołączył: 09 Paź 2006
Posty: 10


Ogląda profil użytkownika Wyślij prywatną wiadomość
Witam.

Mam pytanie czy jest możliwość utworzenia w matlabie CA wykorzystujący model Peny. Nie wiem czy dobrze myślę ale automat komórkowy jest przecież macierzą (a matlab przecież na nich operuje i to b.dobrze).
Czy jest to możliwe do wykonania przy pomocy toolbox-ów i jakich.
Z góry dziękuję za info.


 

Post Wysłany: 10 Października 2006, Wto 3:48 pm Temat postu: Odpowiedz z cytatem
 
AUTOR:
Vieniava
Może pisać książki


Dołączył: 13 Cze 2006
Posty: 445
Skąd: Warszawa


Ogląda profil użytkownika Wyślij prywatną wiadomość Wyślij email Odwiedź stronę autora
moze "Bioinformatics Toolbox":
http://www.mathworks.com/access/helpdesk/help/toolbox/bioinfo/
 

Post Wysłany: 13 Października 2006, Pią 10:01 am Temat postu: Odpowiedz z cytatem
 
AUTOR:
guzalki
Początki pisania


Dołączył: 09 Paź 2006
Posty: 10


Ogląda profil użytkownika Wyślij prywatną wiadomość
Vieniava napisał:
moze "Bioinformatics Toolbox":
http://www.mathworks.com/access/helpdesk/help/toolbox/bioinfo/


nie jestem pewien... Widzę że więcej w nim pracy na genach niż CA ale może ktoś będzie wiedział jak to ugryźć Smile. Zastanawiam się nad jednym czy jest to wykonalne w matlabie (czy da się stworzyć model CA ((model Penny)). Najgorsze jest to że muszę w nim zastosować alg. genetyczny (i tu uśmiech w stronę toolboxów) każdy osobnik na siatce ma posiadać kod genetyczny składający się z zapisu binarnego świadczącym o wieku (stadium rozwoju).
Jeśli się nie da to pozostanie mi c++ Sad


 

Post Wysłany: 13 Października 2006, Pią 12:10 pm Temat postu: Odpowiedz z cytatem
 
AUTOR:
Vieniava
Może pisać książki


Dołączył: 13 Cze 2006
Posty: 445
Skąd: Warszawa


Ogląda profil użytkownika Wyślij prywatną wiadomość Wyślij email Odwiedź stronę autora
jednego jestem pewien, nie uciekaj w C++ - chyba że będziesz miał baaaaaaaaardo złożony oblizceniowo problem (Matlab nie jest taki szybki). Jak dobrze rozumiem musisz wykonać symulację życia (mutacje, krzyżowanie,etc) jakiejś populacji osobników.
Czy są jakieś funkcje w Matlabie które to umożliwiają, może... tylko do końca nie wiesz jak one działają. Najlepiej sobie samemu napisać takowe - trzeba znać li tylko algorytm. I jeśli masz jakiekolwiek zdolności do programowania (a chyba tak jest skoro wspominasz o C++) to Matlab bedzie najlepszym narzędziem. Jeśli nie masz to i tak lepiej od początku uczyć się Matlaba niż C++ Smile.
O działanie na macierzach (wektorach) binarnych się nie martw bo jest to Matlabie bardzo proste, np:
Kod:
 % zdefiniowanie wektoea binarnego
v
=[1 0 1 0 1 0 1 0 1 1 1 0];
%
wyciecie bitow od 4 do 7 wektora v
vcut1
=v(2:7);   
%
wyciecie parzystych elemntow wektora v
vcut2
=v(2:2:end);
%
porownanie na ktorych pozycjach wektory posiadaja te same elementy
vporownanie
= (vcut1==vcut2);   % wektor binarny
% ... i na ilu pozycjach vcut1 i vcut2 sa zgodne:
zgodnosc=sum(vporownanie);     % liczba
% zamiana kolejnosci bitow
vcut1flip
=fliplr(vcut1);        % odwrocony wektor

itd itp
 

Post Wysłany: 25 Października 2006, Sro 7:58 am Temat postu: Odpowiedz z cytatem
 
AUTOR:
guzalki
Początki pisania


Dołączył: 09 Paź 2006
Posty: 10


Ogląda profil użytkownika Wyślij prywatną wiadomość
Vieniava napisał:
jednego jestem pewien, nie uciekaj w C++ - chyba że będziesz miał baaaaaaaaardo złożony oblizceniowo problem (Matlab nie jest taki szybki). Jak dobrze rozumiem musisz wykonać symulację życia (mutacje, krzyżowanie,etc) jakiejś populacji osobników.
Czy są jakieś funkcje w Matlabie które to umożliwiają, może... tylko do końca nie wiesz jak one działają. Najlepiej sobie samemu napisać takowe - trzeba znać li tylko algorytm. I jeśli masz jakiekolwiek zdolności do programowania (a chyba tak jest skoro wspominasz o C++) to Matlab bedzie najlepszym narzędziem. Jeśli nie masz to i tak lepiej od początku uczyć się Matlaba niż C++ Smile.
O działanie na macierzach (wektorach) binarnych się nie martw bo jest to Matlabie bardzo proste, np:
Kod:
 % zdefiniowanie wektoea binarnego
v
=[1 0 1 0 1 0 1 0 1 1 1 0];
%
wyciecie bitow od 4 do 7 wektora v
vcut1
=v(2:7);   
%
wyciecie parzystych elemntow wektora v
vcut2
=v(2:2:end);
%
porownanie na ktorych pozycjach wektory posiadaja te same elementy
vporownanie
= (vcut1==vcut2);   % wektor binarny
% ... i na ilu pozycjach vcut1 i vcut2 sa zgodne:
zgodnosc=sum(vporownanie);     % liczba
% zamiana kolejnosci bitow
vcut1flip
=fliplr(vcut1);        % odwrocony wektor

itd itp


Dzięki za podpowiedź Smile


 

Post Wysłany: 19 Grudnia 2006, Wto 2:40 pm Temat postu: Odpowiedz z cytatem
 
AUTOR:
Łukasz Skowroński
Dość dobry pisarz


Dołączył: 22 Lis 2006
Posty: 78
Skąd: Bydgoszcz


Ogląda profil użytkownika Wyślij prywatną wiadomość Wyślij email
wiem, ze ten temat byl poruszany dawno
ale moze to sie komus przydac
w matlabie domyslnym typem danych jest tablica z elementami typu double
ale mozna ustawic inny typ, w tym logical
Kod:
x=logical([0 1 1 0]);
%
tablica x z elementami typu logicznego
tablice mniej zajmuja i dzialania na nich sa szybsze - jest to zwlaszcza odczuwalne przy duzych tablicach


 

Post Wysłany: 17 Styczenia 2007, Sro 8:57 pm Temat postu: Odpowiedz z cytatem
 
AUTOR:
guzalki
Początki pisania


Dołączył: 09 Paź 2006
Posty: 10


Ogląda profil użytkownika Wyślij prywatną wiadomość
No sporo czasu się nie odzywałem.

Problem polega na tym że bez probemu tworzę macierz (losowe umiejscowienie jedynek(osobników)) i nie mogę sobie poradzić z przypisaniem poszczególenj jedynce (osobnikowi) kodu genetycznego (łańcucha o długości 12bit).
Kod:

%CellAutomat
n
=100;

%
inicjalizacja macierzy
z
= zeros(n,n);
cells = z;
sum = z;
cells = (rand(n,n))<.5 ;

Jak wcisnąć w cells kod binarny 12bit uzależniając to od tego że komórka ma wartość 1 czyli osobnik żyje (istnieje) .Oczywiście vektor kodu (genetycznego 12 bit) komórki musi być generowany losowo.




Ostatnio zmieniony przez guzalki dnia 17 Styczenia 2007, Sro 11:51 pm, w całości zmieniany 4 razy
 

Post Wysłany: 17 Styczenia 2007, Sro 11:34 pm Temat postu: Odpowiedz z cytatem
 
AUTOR:
guzalki
Początki pisania


Dołączył: 09 Paź 2006
Posty: 10


Ogląda profil użytkownika Wyślij prywatną wiadomość
a i jeszcze jedno pytanie
czy do rozpoznawania otoczenia w pobliżu komórki jest to dobre podejście???
Kod:

sum
(x,y) = cells(x,y-1) + cells(x,y+1) + ...
                    
cells(x-1, y) + cells(x+1,y) + ...
                    
cells(x-1,y-1) + cells(x-1,y+1) + ...
                  
cells(y+1,y-1) + cells(x+1,y+1);

i czy w takim wypadku
do znalezienia pary osobników wystarczy dać:
Kod:

cells
= (sum==1)

chodzi by znaleźć jednego osobnika w pobliżu.


 

Post Wysłany: 18 Styczenia 2007, Czw 7:39 am Temat postu: Odpowiedz z cytatem
 
AUTOR:
Łukasz Skowroński
Dość dobry pisarz


Dołączył: 22 Lis 2006
Posty: 78
Skąd: Bydgoszcz


Ogląda profil użytkownika Wyślij prywatną wiadomość Wyślij email
Sad




Ostatnio zmieniony przez Łukasz Skowroński dnia 18 Styczenia 2007, Czw 7:46 am, w całości zmieniany 2 razy
 

Post Wysłany: 18 Styczenia 2007, Czw 7:43 am Temat postu: Odpowiedz z cytatem
 
AUTOR:
Łukasz Skowroński
Dość dobry pisarz


Dołączył: 22 Lis 2006
Posty: 78
Skąd: Bydgoszcz


Ogląda profil użytkownika Wyślij prywatną wiadomość Wyślij email
a nie prosciej jest napisac (i szybciej bedzie dzialac):
Kod:
suma(x,y)=sum(cells(x-1:x+1,y-1:y+1));

zmien zmienna sum na suma
chociaz na pozycji cells(x,y) jest 1, wiec
Kod:
suma(x,y)=sum(cells(x-1:x+1,y-1:y+1))-1;


a poleceniem
Kod:
cells = (sum==1)

znajdziesz jednego osobnika w poblizu, ale jak bedzie ich wiecej, to nie znajdziesz


 

Post Wysłany: 18 Styczenia 2007, Czw 10:40 am Temat postu: Odpowiedz z cytatem
 
AUTOR:
Vieniava
Może pisać książki


Dołączył: 13 Cze 2006
Posty: 445
Skąd: Warszawa


Ogląda profil użytkownika Wyślij prywatną wiadomość Wyślij email Odwiedź stronę autora
można tak:

wprowadzic trzeci wymiar macierzy odpowiadajacy kodowi genetycznemu osobnika - KOD(1: x, 1:y, 1:12)

jesli macierz M o wymiarach x_na_y odpowiada występowaniu osobnika na pozycji (i,j) to generowanie moze wygladac tak:

Kod:
 % losowanko
KOD
=zeros(x,y,12);
for
i=1:x
    
for j=1:y
          
if M(i,j)==1
              KOD
(i,j,:)=randint(1,12,[0 1]);
          
end
      end
end


i wtedy kod genetyczny osobnika (i,j) mozna odczytac za pomoca:
KOD(i,j,:)


Ostatnio zmieniony przez Vieniava dnia 18 Styczenia 2007, Czw 11:23 am, w całości zmieniany 2 razy
 

Post Wysłany: 18 Styczenia 2007, Czw 10:55 am Temat postu: Odpowiedz z cytatem
 
AUTOR:
Łukasz Skowroński
Dość dobry pisarz


Dołączył: 22 Lis 2006
Posty: 78
Skąd: Bydgoszcz


Ogląda profil użytkownika Wyślij prywatną wiadomość Wyślij email
cells to zmienna, a nie komorka (cell) w matlabie


 

Post Wysłany: 18 Styczenia 2007, Czw 11:28 am Temat postu: Odpowiedz z cytatem
 
AUTOR:
Vieniava
Może pisać książki


Dołączył: 13 Cze 2006
Posty: 445
Skąd: Warszawa


Ogląda profil użytkownika Wyślij prywatną wiadomość Wyślij email Odwiedź stronę autora
a co do badania otoczenia to
Cytat:

Kod:

sum
(x,y) = cells(x,y-1) + cells(x,y+1) + ...
                  
cells(x-1, y) + cells(x+1,y) + ...
                  
cells(x-1,y-1) + cells(x-1,y+1) + ...
                
cells(y+1,y-1) + cells(x+1,y+1);



wylozy sie przy badaniu otoczenia pierwszego i ostatniego elementu w kolumnie/wierszu (-przekroczenie zakresów)! Trzeba ztem trochę kodu napisać (głównie IFy ) Smile
 

Post Wysłany: 18 Styczenia 2007, Czw 7:54 pm Temat postu: Odpowiedz z cytatem
 
AUTOR:
guzalki
Początki pisania


Dołączył: 09 Paź 2006
Posty: 10


Ogląda profil użytkownika Wyślij prywatną wiadomość
Łukasz Skowroński napisał:
a nie prosciej jest napisac (i szybciej bedzie dzialac):
Kod:
suma(x,y)=sum(cells(x-1:x+1,y-1:y+1));

zmien zmienna sum na suma
chociaz na pozycji cells(x,y) jest 1, wiec
Kod:
suma(x,y)=sum(cells(x-1:x+1,y-1:y+1))-1;


a poleceniem
Kod:
cells = (sum==1)

znajdziesz jednego osobnika w poblizu, ale jak bedzie ich wiecej, to nie znajdziesz


nie śmiga wyrzuca:
Kod:
 ??? Subscripted assignment dimension mismatch
suma
(x,y)=cells(x-1:x+1,y-1:y+1)-1;.


 

Post Wysłany: 19 Styczenia 2007, Pią 10:22 am Temat postu: Odpowiedz z cytatem
 
AUTOR:
Vieniava
Może pisać książki


Dołączył: 13 Cze 2006
Posty: 445
Skąd: Warszawa


Ogląda profil użytkownika Wyślij prywatną wiadomość Wyślij email Odwiedź stronę autora
po pierwsze
chcesz jednej komorce w suma() (a to jest tylko liczba) przypisac macierz 3x3
pewnie chodzilo Ci o to:
Kod:
 suma(x,y)=sum(sum(cells(x-1:x+1,y-1:y+1)))-1;


po drugie:
to ni bedzie dzialac na obrzezach macierzy cells (przeciez pisalem o tym wczesniej?!?!?)
 

Forum MATLAB Strona Główna-> Biologia komputerowa i systemy medyczne
Wyświetl posty z ostatnich:   
Idź do strony 1 2  Następny

Napisz nowy temat     Odpowiedz do tematu Zobacz poprzedni temat :: Zobacz następny temat

Wszystkie czasy w strefie CET (Europa)

Skocz do:  

Statystyki forum:



Od dnia 08.06.2006 forum odwiedzano 46976179
Najwięcej użytkowników 266 było obecnych 19 Lutego 2015, Czw 7:03 pm

Aktualnie online:




Najnowsze posty na forum:
trzy dni kondora s01e04 gdzie obejrzeć online?  (22 Czerwca 2018, Pią 6:34 pm)
[s01e04] 3 dni Kondora 1 sezon 4 odcinek online  (22 Czerwca 2018, Pią 6:34 pm)
[s01e04] Trzy dni kondora 1 sezon 4 odcinek online  (22 Czerwca 2018, Pią 6:34 pm)
trzy dni kondora s01e03 gdzie obejrzeć online?  (22 Czerwca 2018, Pią 6:26 pm)
[s01e03] 3 dni Kondora 1 Sezon 3 Odcinek Online  (22 Czerwca 2018, Pią 6:26 pm)
[s01e03] Trzy dni Kondora 1 sezon 3 odcinek online  (22 Czerwca 2018, Pią 6:26 pm)
[s01e02] 3 dni Kondora 1 sezon 2 odcinek online  (22 Czerwca 2018, Pią 6:20 pm)
Trzy dni kondora s01e02 gdzie obejrzeć online?  (22 Czerwca 2018, Pią 6:20 pm)
[s01e02] Trzy dni kondora 1 Sezon 2 Odcinek Online  (22 Czerwca 2018, Pią 6:19 pm)
3 dni Kondora s01e01 gdzie obejrzeć online?  (22 Czerwca 2018, Pią 6:14 pm)
Twoje prawa:
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Nie możesz ściągać plików na tym forum