Porównaj ceny domen i usług IT, sprzedawców z całego świata

Konwertuj tablicę komórek na ciąg w MATLAB


Wykonywałem pewne operacje w Strings. Mam ciąg „AGCT” w X. Zapisałem go w komórce za pomocą następującego polecenia
y(1,1)={x};

Jest teraz przechowywany w jednej komórce. Teraz chcę osobno wziąć każdą literę z łańcucha. Chcę najpierw wziąć literę „G” i tak dalej. W takim przypadku konieczna jest transformacja tablicy komórek. Jak więc ponownie przekonwertować zawartość komórki z powrotem na ciąg?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Możesz pobrać ciąg z komórki za pomocą nawiasów klamrowych (
{}
):
x='AGCT';
y(1) = {x};
y{1}
ans = AGCT

Możesz też łączyć operatory indeksowania w łańcuchy, aby uzyskać poszczególne znaki bezpośrednio z tablicy komórek. Na przykład:
y{1}(2)
ans =G

Należy również pamiętać, że funkcja
char
może przekształcić tablicę komórek zawierającą ciągi znaków w tablicę znaków 2D, łącząc ciągi w pionie, wypełniając w razie potrzeby spacje:

S = char (C)
kiedy
C
jest komórkową tablicą ciągów, umieszcza każdy element
C
w ciągach
Tablica znaków S
. Użyj
CELLSTR
, aby przekonwertować z powrotem.

Możesz więc przekonwertować tylko całą tablicę komórek na tablicę znaków 2D za pomocą
char (y)
, ale myślę, że szukasz sposobu na indeksowanie poszczególnych znaków bezpośrednio z tablicy komórek, jak opisano powyżej.
A mówiąc o przekształcaniu tablicy komórek, spójrz na
cellfun
, którego można użyć do wykonania tej samej operacji na każdej komórce. Na przykład, jeśli masz komórkę taką jak
y = {'AGCT', 'CTGA'};
i potrzebujesz drugiego znaku każdej komórki (tablicy znaków zawierającej
GT
), możesz ulec pokusie zrobienia
y {:} (2)
, ale to nie zadziała (pierwszy indeks musi być skalarny). Jest na to rozwiązanie:
>> iBase = 2;
>> basei = cellfun(@(c)c(iBase),y)
basei =
GT

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się