अच्छा दिन।

Saya mencoba menemukan ruang dalam kalimat menggunakan fungsi "ismember" untuk nx1 char.

Di sini saya memiliki contoh kerja untuk 1x1 char:

    %% Working example
    StringSearchedSpaces = ' ' ; %White spaces
    
    String1 = "Random info - at beginning-man. "+ ...
            "Random info still continues. ";
    
    Char1 = convertStringsToChars(String1);
    
    String1Spaceidx = ismember(Char1, StringSearchedSpaces);

Perhatikan ini mengembalikan "0" Jika karakter bukan 'ruang', dan "1" jika itu adalah 'ruang'. Sekarang, saya ingin menerapkan logika yang sama untuk nx1 char, lihat usaha saya:

%% Not Working example
String2 = ["Random info in middle one, "+ ...
        "Random info still continues. ",
        "Random info in middle two. "+ ...
        "Random info still continues. "];

Char2 = convertStringsToChars(String2);

%PlanA
PlanAString1Spaceidx = ismember(Char2, StringSearchedSpaces);
%PlanB
for z=1:length(Char2)
PlanBString2Spaceidx(z,:) = ismember(Char2(z,:), StringSearchedSpaces);
end

Kedua rencana untuk beberapa alasan tidak mengembalikan nilai "0" dan "1", yang menunjukkan lokasi 'spasi'. Tapi, hanya mengembalikan "0"?

Apa yang bisa saya lakukan untuk menerima jawaban dengan benar, dan dalam format yang sama dengan "contoh kerja" (menggunakan 1x1 char), tetapi sekarang untuk nx1 char?

पहले ही, आपका बहुत धन्यवाद।

1
Div 9 अक्टूबर 2020, 15:37

1 उत्तर

सबसे बढ़िया उत्तर

Dalam kasus Anda convertStringsToChars akan mengembalikan array cell. Anda harus menerapkan ismember functio pada setiap sel dalam array, mis. Dengan menggunakan cellfun:

space_idx_char2 = cellfun(@(s) ismember(s, StringSearchedSpaces),Char2, 'UniformOutput', false)

Atau, Anda dapat menggunakan loop untuk, tetapi Anda harus mengubah kurung sedikit:

PlanBString2Spaceidx = cell(size(Char2)); % initialize empty cell array
for z=1:length(Char2)
    PlanBString2Spaceidx{z,:} = ismember(Char2{z,:}, StringSearchedSpaces);
end
4
rinkert 9 अक्टूबर 2020, 13:01