जवाबों:
मुझे लगता है कि निम्नलिखित कोड चाल कर सकता है:
strs = {'HA' 'KU' 'LA' 'MA' 'TATA'}
ind=find(ismember(strs,'KU'))
यह लौटाता है
ans =
2
>> strs = {'HA' 'KU' 'LA' 'MA' 'TATA'};
>> tic; ind=find(ismember(strs,'KU')); toc
बीता हुआ समय 0.001976 सेकंड है।
>> tic; find(strcmp('KU', strs)); toc
बीता हुआ समय 0.000014 सेकंड है।
एसओ, स्पष्ट रूप strcmp('KU', strs)
से बहुत कम समय लेता हैismember(strs,'KU')
2011 ए के बाद से, अनुशंसित तरीका है:
booleanIndex = strcmp('KU', strs)
यदि आप पूर्णांक सूचकांक प्राप्त करना चाहते हैं (जिसकी आपको अक्सर आवश्यकता नहीं है), आप उपयोग कर सकते हैं:
integerIndex = find(booleanIndex);
strfind
पदावनत है, इसलिए इसका उपयोग न करने का प्रयास करें।
मुझे लगता है कि हर कोई आपके कोड में सबसे महत्वपूर्ण दोष से चूक गया:
strs = {'HA' 'KU' 'LA' 'MA' 'TATA'}
होना चाहिए:
strs = {'HA' 'KU' 'NA' 'MA' 'TATA'}
या
strs = {'HAKUNA' 'MATATA'}
अब अगर आप उपयोग करने के लिए छड़ी
ind=find(ismember(strs,'KU'))
आपको कोई चिंता नहीं होगी :)।
इस मामले के लिए अन्य उत्तर संभवतः सरल हैं, लेकिन पूर्णता के लिए मुझे लगा कि मैं एक अनाम फ़ंक्शन के साथ सेलफुन का उपयोग जोड़ूंगा
indices = find(cellfun(@(x) strcmp(x,'KU'), strs))
जिसका लाभ यह है कि आप इसे आसानी से असंवेदनशील बना सकते हैं या उन मामलों में इसका उपयोग कर सकते हैं जहां आपके पास संरचनाओं की सेल सरणी है:
indices = find(cellfun(@(x) strcmpi(x.stringfield,'KU'), strs))
सबसे छोटा कोड:
strs = {'HA' 'KU' 'LA' 'MA' 'TATA'};
[~,ind]=ismember('KU', strs)
लेकिन यह केवल पहले स्थान पर है strs
। अगर तत्व तो नहीं मिला ind=0
।
Strcmp और strcmpi फ़ंक्शन ऐसा करने का सबसे सीधा तरीका है। वे सरणियों के माध्यम से खोज करते हैं।
strs = {'HA' 'KU' 'LA' 'MA' 'TATA'}
ix = find(strcmp(strs, 'KU'))
क्या आप ने कोशिश की
indices = Find(strs, 'KU')
लिंक देखें
वैकल्पिक रूप से,
indices = strfind(strs, 'KU');
अगर मैं गलत नहीं हूँ तो भी काम करना चाहिए।