Bird
Raised Fist0
MATLABdata~30 mins

String searching (contains, strfind) in MATLAB - Mini Project: Build & Apply

Choose your learning style10 modes available
String Searching with contains and strfind in MATLAB
📖 Scenario: You work in a library and need to find books that mention certain keywords in their titles.
🎯 Goal: Build a MATLAB program that searches for a keyword in a list of book titles using contains and strfind.
📋 What You'll Learn
Create a cell array of book titles
Create a keyword variable to search for
Use contains to find which titles include the keyword
Use strfind to find the position of the keyword in each title
Display the results clearly
💡 Why This Matters
🌍 Real World
Searching for keywords in book titles helps librarians quickly find relevant books for readers.
💼 Career
Knowing how to search strings is useful in data analysis, text processing, and software development.
Progress0 / 4 steps
1
Create a list of book titles
Create a cell array called bookTitles with these exact strings: 'Matlab Basics', 'Advanced Programming', 'Data Science', 'Machine Learning', and 'Deep Learning'.
MATLAB
Hint

Use curly braces {} to create a cell array of strings in MATLAB.

2
Set the keyword to search
Create a variable called keyword and set it to the string 'Learning'.
MATLAB
Hint

Assign the string 'Learning' to the variable keyword.

3
Find titles containing the keyword using contains and strfind
Use contains with bookTitles and keyword to create a logical array called hasKeyword. Then use a for loop with index i from 1 to length of bookTitles to find the position of keyword in each title using strfind. Store the result in a cell array called positions.
MATLAB
Hint

contains returns a logical array. Use strfind inside a loop to get positions.

4
Display the search results
Use a for loop with index i from 1 to length of bookTitles to print each title. If hasKeyword(i) is true, print 'Found at position(s):' followed by the positions from positions{i}. Otherwise, print 'Keyword not found'.
MATLAB
Hint

Use fprintf to print each title and the search results. Use mat2str to convert positions to string.

Practice

(1/5)
1. Which MATLAB function returns a logical true or false indicating if a substring exists within a string?
easy
A. contains
B. strfind
C. findstr
D. substring

Solution

  1. Step 1: Understand the purpose of contains

    contains returns true or false if a substring is found inside a string.
  2. Step 2: Compare with strfind

    strfind returns positions, not logical true/false.
  3. Final Answer:

    contains -> Option A
  4. Quick Check:

    Logical check for substring = contains [OK]
Hint: Use contains for true/false substring check [OK]
Common Mistakes:
  • Confusing strfind with contains
  • Thinking strfind returns true/false
  • Using findstr which is outdated
2. Which of the following is the correct syntax to find the starting indices of substring 'cat' in string str = 'concatenate' using strfind?
easy
A. contains(str, 'cat')
B. strfind('cat', str)
C. strfind(str, 'cat')
D. strfind(str, cat)

Solution

  1. Step 1: Recall strfind syntax

    The first argument is the main string, second is the substring to find.
  2. Step 2: Check each option

    strfind(str, 'cat') correctly uses strfind(str, 'cat'). strfind('cat', str) reverses arguments. contains(str, 'cat') uses contains, not strfind. strfind(str, cat) misses quotes around 'cat'.
  3. Final Answer:

    strfind(str, 'cat') -> Option C
  4. Quick Check:

    strfind(mainString, substring) = strfind(str, 'cat') [OK]
Hint: First argument main string, second substring in strfind [OK]
Common Mistakes:
  • Swapping arguments in strfind
  • Forgetting quotes around substring
  • Using contains instead of strfind for indices
3. What is the output of the following MATLAB code?
str = 'abracadabra';
pos = strfind(str, 'ra');
disp(pos);
medium
A. [3 10]
B. [2 9]
C. [4 11]
D. []

Solution

  1. Step 1: Identify substring positions in 'abracadabra'

    Look for 'ra' in the string: 'abracadabra'. The substring 'ra' starts at index 3 and 10.
  2. Step 2: Confirm output of strfind

    strfind returns starting indices of matches, so output is [3 10].
  3. Final Answer:

    [3 10] -> Option A
  4. Quick Check:

    Positions of 'ra' = [3 10] [OK]
Hint: Count string indices carefully for strfind output [OK]
Common Mistakes:
  • Counting indices starting at 0 instead of 1
  • Confusing substring length with position
  • Expecting logical output instead of indices
4. Identify the error in this MATLAB code snippet:
str = 'hello world';
pos = strfind('world', str);
disp(pos);
medium
A. disp cannot display arrays
B. Arguments of strfind are reversed
C. strfind cannot search for 'world'
D. Missing semicolon after strfind

Solution

  1. Step 1: Check strfind argument order

    strfind expects the main string first, then the substring. Here, arguments are reversed.
  2. Step 2: Understand impact of reversed arguments

    Searching 'world' inside 'hello world' is correct, but reversed arguments cause wrong or empty output.
  3. Final Answer:

    Arguments of strfind are reversed -> Option B
  4. Quick Check:

    strfind(mainString, substring) correct order [OK]
Hint: Main string first, substring second in strfind [OK]
Common Mistakes:
  • Swapping arguments in strfind
  • Assuming disp can't show arrays
  • Thinking semicolon is mandatory for correctness
5. You want to find all positions of the substring 'ana' in str = 'banana bandana' and check if it exists. Which code correctly does this?
hard
A. positions = strfind('ana', str); exists = contains('ana', str);
B. positions = contains(str, 'ana'); exists = strfind(str, 'ana');
C. positions = find(str, 'ana'); exists = contains(str, 'ana');
D. positions = strfind(str, 'ana'); exists = contains(str, 'ana');

Solution

  1. Step 1: Use strfind to get positions

    strfind(str, 'ana') returns all starting indices of 'ana' in the string.
  2. Step 2: Use contains to check existence

    contains(str, 'ana') returns true if 'ana' is found anywhere in str.
  3. Step 3: Verify options

    positions = strfind(str, 'ana'); exists = contains(str, 'ana'); correctly uses both functions. positions = contains(str, 'ana'); exists = strfind(str, 'ana'); swaps roles. positions = strfind('ana', str); exists = contains('ana', str); reverses arguments. positions = find(str, 'ana'); exists = contains(str, 'ana'); uses invalid function find for strings.
  4. Final Answer:

    positions = strfind(str, 'ana'); exists = contains(str, 'ana'); -> Option D
  5. Quick Check:

    Positions with strfind, existence with contains [OK]
Hint: Use strfind for positions, contains for true/false [OK]
Common Mistakes:
  • Swapping arguments in strfind or contains
  • Using find instead of strfind
  • Confusing output types of contains and strfind
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard