Bu Blogda Ara

29.07.2009

farklı uzunluklu string dizilerini dikey eklemek - Matlab

(string array vertical concatenation with different lengths in matlab)

matlabda farklı uzunluklu string dizilerini birbirine dikey olarak ekleyerek matris elde etmek istiyordum, ama birtürlü yapamıyordum.

dikey string ekleme için strvcat (string vertical concatenation) kullanılıyor.

>> s=strvcat('birinci','sekizinci')
s =
birinci
sekizinci

benim istediğim ise biraz farklı, ben zaten kendisi dizi olan stringleri eklemek istiyorum mesala bir cümleyi kelimelere bölüp hecelerine ayırdım ve herbir kelimenin bir satırda , hecelerinde sütünlarda yer almasını istiyorum;

x birinci kelimem ve y ikinci kelimem mesala;

>> x={'bi' 'ri' 'n' 'ci'}
x =
'bi' 'ri' 'n' 'ci'

>> y={'se' 'ki' 'zi' 'n' 'ci'}
y =
'se' 'ki' 'zi' 'n' 'ci'

aynı fonksiyon ile eklemeye çalıştığımda karekter dizisi vermek gerektiğine dair hata veriyor.

>> s=strvcat(x,y)
??? Error using ==> char
Inputs must be character arrays.

Error in ==> strvcat at 29
s = char(varargin{notempty});

bende matris olarak değil hücre olarak oluşturayım dedim şöyleki:
(süslü parentez içine yazıldığında hücre olarak işlem görüyor)

>> s={x;y}
s =
{1x4 cell} {1x5 cell}

bu durumda biri 4 heceli diğeri 5 heceli iki diziyi matrise koymuş oluyorum. aslında benim s matrisim 2 elemanlı, ama herbir elaman kendi içinde farklı uzunluklu diziler ihtiva ediyor.

bu durumda birinci satıra yani ilk dizime ulaşmak istersem dizinin indisini yine süslü parentez içinde vermem lazım:

>> s{1}
ans =
'bi' 'ri' 'n' 'ci'

1. kelimenin hecelerine ulaşmak istersem:

>> a=s{1}
a =
'bi' 'ri' 'n' 'ci'
>> a(1)
ans =
'bi'

ve sonucu karakter dizisine çevirmek istersek:

>> char(s{1})
ans =
bi
ri
n
ci