2013-09-07 28 views
13

< 20x1> hücre dizilim var ve bunların her biri bir biçim biçiminde bazı verileri depolar (bana göründüğü gibi!). Hücrenin her elemanına bireysel bir dize olarak erişmek istiyorum ve bölme kelimelerde.strsplit: 'char' giriş türü için tanımlanmamış işlev

Sahip olduğum hücre dizisi < 20x1> hücre dizisidir ve her öğeye bir döngü olarak kullanıyorum.

for i=1:20 
    line=newline{i} 
end 

Bu, dizinin içindeki tüm öğeleri gösterir. Şimdi satır bir dize olduğundan, dizede sözcükleri almak için strsplit işlevi uygularım.

for i=1:20 
    words(i,:)=strsplit(line) 
end 

Bu bana bir hata mesajı verir: Yanlış nerede

??? Undefined function or method 'strsplit' for input 
arguments of type 'char'. 

Error in ==> chk at 15 
words=strsplit(newline{i}) 

kimse bana açıklayabilir? Herhangi bir yardım takdir edilecektir. Şimdiden teşekkürler.

+1

açıklığa kavuşturulacak bir kaç şey, aşağıdaki komutların çıktısı nedir: 's = newline {1}; whos newline s; hangi-strsplit'. Ayrıca, 'strsplit' çıktısının bir hücre dizisi olacağını unutmayın. – Amro

+0

Komutun çıktısı, satırın ilk hücresindeki dizedir: ans = YELLOW KÜÇÜK STRETCH YETİŞKİN T bu sözcükleri bir dizide ayıklamam gerekir – BajajG

+0

evet ama hala yeterli bilgi yok, MATLAB bir string ve çok benzer bir dizeyi içeren bir hücre dizisi yazdırabildiğini görüyorsunuz, bu yüzden bu komutların tam çıktısını göndermenizi istedim ... Ayrıca "strsplit" de gölgelenebilir. Çalışma alanınızda aynı ada sahip bir değişken veya tamamen farklı bir işlev/komut dosyası. – Amro

cevap

22

Tahminimce, R2013a öncesinde version Matlab kullanıyorsunuz. Genel işlevler olduklarına ve arıların daha önce eklenmiş olmasına rağmen, strsplit ve strjoin sadece added in this most recent version idi.

strsplit'a erişememenizin bir çok yolu varsa, tek yapmanız gereken bir dizeyi sözcüklere ayırmaktır.

strread(line,'%s','delimiter',' ') 

Ancak textscan daha sağlam olmalıdır: sizin whitespaces tüm basit alanlarda ise aynen bu şekilde strread kullanabilirsiniz regexp kullanma

textscan(line,'%s') 

da sağlam olmalı, ama büyük olasılıkla daha yavaş olacaktır : sadece strsplit gibi

regexp(line,'\s+','split') 

dizeleri (sözlerin) hücre dizilerine olarak bu dönüş çıkışlarının tamamı

. textscan'dan gelen çıktı, diğerlerine göre aktarılır.

+0

Evet, haklısınız! Matlab R2010a kullanıyorum. Ve teşekkürler ... yolum sadece istediğim şekilde çalışır. :) – BajajG

+0

Matlab [önerileri] (http://uk.mathworks.com/help/matlab/ref/strread.html) strsplit üzerinden textscan kullanarak. – uutsav

+2

@UtsavSinha: bağlantınız ** strread' ** belgesine aittir. Bu soru ve cevap çok farklı bir işlev olan 'strsplit' hakkında. – horchler

İlgili konular