উত্তর:
আমার ধারণা, নিম্নলিখিত কোডটি কৌশলটি করতে পারে:
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')
২০১১a থেকে, প্রস্তাবিত উপায় হ'ল:
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');
আমি ভুল না হলে কাজ করা উচিত।