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

Dopasowanie danych z dwĂłch 'cell aray'
Forum MATLAB Strona Główna-> MATLAB
Post Wysłany: 19 Lutego 2018, Pon 5:33 pm Temat postu: Dopasowanie danych z dwĂłch 'cell aray' Odpowiedz z cytatem
 
AUTOR:
kurcze_gdzie_moje_pomidor



Dołączył: 19 Lut 2018
Posty: 2


Ogląda profil użytkownika Wyślij prywatną wiadomość
Cześć. Sprawa jest dość trywialna zapewne ale ja nie mam zbyt pomysłu jak to zrobić Very Happy Może za krótko kombinuję?

Otóż wygląda sprawa tak, że mam 2 tablice komórkowe.

A=
{
[1,1] = 100001
[2,1] = 100000
[3,1] = 100001
[4,1] = 100000
}
B=
{
[1,1] = 8, 9, 10, 11, 12
[2,1] = 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24
[3,1] = 28, 29, 30, 31, 32
[4,1] = 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72
}

i chodzi mi o stworzenie nowej o wymiarach: (2,1), w tym konkretnym wypadku. 2, ponieważ w całej pierwszej tablicy mamy wartości tylko 10000 i 10001, nie ważne że powtarzają się po 2 razy. Jeżeli było by tam więcej liczb np 10002, to wtedy były by 3 wymiary itp.

Algorytm ma za zadanie stworzyć te nowe tablice, i wstawić do nich dane z tych samych pozycji co w komórce B.

Czyli wyjściowe komórki w tym przykładzie były by:

OUT1 =
{
[1,1] = 100001
[2,1] = [8, 9, 10, 11, 12, 28, 29, 30, 31, 32]
}

OUT2 =
{
[1,1] = 100000
[2,1] = [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72]
}

Rozumiecie o co mi chodzi Very Happy 1 pole to "tytuł" czyli ta liczba a druga to wartości liczbowe ze wszystkich pól tablicy B, co w komórce A znajdowały się w tym samym miejscu gdzie tytuł.

Z góry dziekuję za odpowiedź, a jeżeli wyraziłem się niejasno to wyjaśnię Very Happy


 

Post Wysłany: 21 Lutego 2018, Sro 10:18 pm Temat postu: Odpowiedz z cytatem
 
AUTOR:
mc2
Może pisać książki


Dołączył: 19 Maj 2009
Posty: 2261


Ogląda profil użytkownika Wyślij prywatną wiadomość Odwiedź stronę autora
PodpowiedĹş:
Kod:
A = { 100001;
100000;
100001;
100000
}
B = {
[
8, 9, 10, 11, 12];
[
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24];
[
28, 29, 30, 31, 32];
[
61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72]
}

a = unique(cell2mat(A));
for
i =1:length(a)
 
idx = cell2mat(A) == a(i);
 
B(idx)
end

Do tworzenia zmiennych możesz użyć komendy eval, ale zastanów się czy nie możesz zastosować innego rozwiązania.
 

Post Wysłany: 22 Lutego 2018, Czw 10:20 am Temat postu: Odpowiedz z cytatem
 
AUTOR:
kurcze_gdzie_moje_pomidor



Dołączył: 19 Lut 2018
Posty: 2


Ogląda profil użytkownika Wyślij prywatną wiadomość
Dzięki! Trochę inaczej to wykminiłem, ale Twoje rozwiązanie jest prostsze. Mam jeszcze jedno pytanie o kolejne dopasowanie. Z wejściowego cellu:

Kod:

input_data
=
{
  [
1,1] =  100001
 
[2,1] =  100000
 
[3,1] =  100001
 
[4,1] =  100000
 
[1,2] = 8, 9, 10, 11, 12
 
[2,2] = 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24
 
[3,2] = 28, 29, 30, 31, 32
 
[4,2] = 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72
 
[1,3] =

    
100.00000    19.64800
     102.00000   
-0.35200
     103.00000    27.21000
     104.00000    27.19800

 
[2,3] =

    
101.000   -30.148

 
[3,3] =

    
100.00000    14.50100
     102.00000   
-0.49900
     103.00000    24.85300
     104.00000    24.61300

 
[4,3] =

    
101.000   -37.489
}


potrzebuję stworzyć coś ala:

Kod:

out
=
{
 [
1,1] = [100001 100.00000 19.64800 14.50100]
 [
2,1] = [100001 102.00000 -0.35200 0.49900]
 [
3,1] = [100001 103.00000 27.21000 24.85300]
 [
4,1] = [100001 104.00000 19.64800 14.50100]
 [
1,2] = [100000 101.000 -30.148 -37.489]
}


w sensie, że dla każdego 'tytułu' z komórek (:,1), dopasowane są elementy z komórek (:,3). jak widać kazdy tytuł odpowiada danej komórce, mianowicie 100001 jest w [1,3] i w [3,3], a 100000 w [2,3] i [4,3]. I potrzebuję rozdzielić wszystkie elementy z tablic (:,3) zaczynające się od poszczególnych identyfikatorów (100,101 itp), i umieścić osobno w wektorach lub komórkach. Wiedziałbyś jak coś takiego zrobić?


 

Forum MATLAB Strona Główna-> MATLAB
Wyświetl posty z ostatnich:   

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 46725551
Najwięcej użytkowników 266 było obecnych 19 Lutego 2015, Czw 7:03 pm

Aktualnie online:




Najnowsze posty na forum:
Serial SNL Polska ogladaj online Showmax/CDA/Zalukaj  (15 Czerwca 2018, Pią 10:22 am)
Ucho Prezesa ogladaj wszystkie odcinki online Showmax/CDA  (15 Czerwca 2018, Pią 10:12 am)
Zona Idealna ogladaj serial online napisy PL CDA/Showmax  (15 Czerwca 2018, Pią 9:52 am)
Haven wszystkie sezony ogladaj online napisy PL Showmax  (15 Czerwca 2018, Pią 9:43 am)
Luther wszystkie sezony oglądaj online napisy PL Showmax  (15 Czerwca 2018, Pią 9:39 am)
Ogladaj online Halt and Catch Fire napisy/lektor pl Showmax  (15 Czerwca 2018, Pią 9:34 am)
Serial Fargo wszystkie sezony ogladaj onlie napisy PL CDA  (15 Czerwca 2018, Pią 9:29 am)
Ebook Remigiusz Mroz Wotum nieufnosci PDF pobierz Chomikuj  (15 Czerwca 2018, Pią 9:09 am)
Ebook Remigiusz Mroz Zabojczy pocisk PDF pobierz Chomikuj  (15 Czerwca 2018, Pią 9:05 am)
Ebook Remigiusz Mroz Deniwelacja PDF pobierz Chomikuj  (15 Czerwca 2018, Pią 9:02 am)
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