📖 Scenario: You work as a data analyst and need to process a list of numbers to find their squares. You want to learn how to do this efficiently in MATLAB using both loops and vectorization.
🎯 Goal: Build a MATLAB script that first creates a vector of numbers, then uses a loop to square each number, and finally uses vectorization to do the same task more efficiently. You will compare both methods by printing the results.
📋 What You'll Learn
Create a vector called numbers with values from 1 to 5
Create a zero vector called squares_loop of the same size as numbers
Use a for loop with variable i to square each element of numbers and store in squares_loop
Create a vector called squares_vectorized that contains the squares of numbers using vectorized operation
Print both squares_loop and squares_vectorized to compare
💡 Why This Matters
🌍 Real World
Data analysts and engineers often need to process large sets of numbers quickly. Vectorization helps make code faster and cleaner.
💼 Career
Knowing how to replace loops with vectorized operations is a valuable skill in MATLAB programming for scientific computing, data analysis, and engineering tasks.
Progress0 / 4 steps
1
Create the vector of numbers
Create a vector called numbers with the values [1 2 3 4 5].
MATLAB
Hint
Use square brackets to create a row vector in MATLAB.
2
Create a zero vector for loop results
Create a zero vector called squares_loop of the same size as numbers using the zeros function.
MATLAB
Hint
Use zeros(size(numbers)) to create a zero vector matching numbers.
3
Square numbers using a for loop
Use a for loop with variable i from 1 to length of numbers to square each element and store it in squares_loop(i).
MATLAB
Hint
Inside the loop, square numbers(i) and assign it to squares_loop(i).
4
Square numbers using vectorization and print results
Create a vector called squares_vectorized by squaring numbers using vectorized operation. Then print squares_loop and squares_vectorized using disp.
MATLAB
Hint
Use the element-wise power operator .^ to square the vector numbers.
Use disp to print text and vectors.
Practice
(1/5)
1. Which of the following best describes vectorization in MATLAB?
easy
A. Writing functions that call themselves recursively
B. Using nested for loops to process each element individually
C. Manually indexing each element to apply operations
D. Performing operations on entire arrays at once without explicit loops
Solution
Step 1: Understand vectorization concept
Vectorization means applying operations to whole arrays at once, avoiding explicit loops.
Step 2: Compare options
Only Performing operations on entire arrays at once without explicit loops describes this correctly; others describe loops or recursion.
Final Answer:
Performing operations on entire arrays at once without explicit loops -> Option D
Quick Check:
Vectorization = whole-array operations [OK]
Hint: Vectorization means no loops, operate on full arrays [OK]
Common Mistakes:
Confusing vectorization with loops
Thinking recursion is vectorization
Assuming manual indexing is vectorization
2. Which MATLAB syntax correctly sums all elements of a vector A using vectorization?
easy
A. sum = 0; for i = 1:length(A); sum = sum + A(i); end
B. sum = A + A;
C. sum = sum(A);
D. sum = A(1) + A(2);
Solution
Step 1: Identify vectorized sum syntax
MATLAB's built-in sum() function sums all elements of an array directly.
Step 2: Check options
sum = sum(A); uses sum(A), which is vectorized. sum = 0; for i = 1:length(A); sum = sum + A(i); end uses a loop. sum = A + A; adds vector to itself. sum = A(1) + A(2); sums only two elements.
Final Answer:
sum = sum(A); -> Option C
Quick Check:
sum(A) sums all elements vectorized [OK]
Hint: Use built-in sum() for vectorized addition [OK]
Common Mistakes:
Using loops instead of sum()
Adding vector to itself instead of summing
Summing only part of the vector
3. What is the output of this MATLAB code?
A = [1, 2, 3, 4]; B = A .* 2;
medium
A. [1, 4, 9, 16]
B. [2, 4, 6, 8]
C. [3, 4, 5, 6]
D. Error: Matrix dimensions must agree
Solution
Step 1: Understand element-wise multiplication
The operator .* multiplies each element of A by 2 individually.
Step 2: Calculate each element
1*2=2, 2*2=4, 3*2=6, 4*2=8, so B = [2, 4, 6, 8].
Final Answer:
[2, 4, 6, 8] -> Option B
Quick Check:
Element-wise multiply by 2 = [2,4,6,8] [OK]
Hint: .* multiplies each element individually [OK]
Common Mistakes:
Confusing .* with matrix multiplication (*)
Expecting squared values instead of doubled
Thinking it causes dimension errors
4. Identify the error in this MATLAB code that tries to double each element of vector A:
A = [1, 2, 3]; for i = 1:length(A); A = A * 2; end
medium
A. The loop variable i is not used inside the loop
B. Using * instead of .* causes dimension mismatch
C. The vector A is not initialized
D. The loop range is incorrect
Solution
Step 1: Analyze the loop body
The code multiplies entire vector A by 2 each iteration, ignoring i.
Step 2: Understand the effect
Since i is unused, the loop repeats the same operation, scaling A multiple times (by 8 total) instead of doubling individual elements via indexing.
Final Answer:
The loop variable i is not used inside the loop -> Option A
Quick Check:
Loop variable unused causes logic error [OK]
Hint: Use loop variable to index elements inside loop [OK]
Common Mistakes:
Ignoring loop variable usage
Confusing * and .* operators
Assuming vector auto-updates element-wise
5. You want to compute the square of each element in a large vector X efficiently. Which MATLAB code snippet uses vectorization correctly?
hard
A. Y = X .* X;
B. Y = zeros(size(X)); for i = 1:length(X); Y = X(i)^2; end
C. Y = X ^ 2;
D. for i = 1:length(X); Y(i) = X(i)^2; end
Solution
Step 1: Understand vectorized squaring
Element-wise multiplication .* between X and X squares each element efficiently.
Step 2: Check each option
for i = 1:length(X); Y(i) = X(i)^2; end uses a loop (less efficient). Y = zeros(size(X)); for i = 1:length(X); Y = X(i)^2; end overwrites Y with a scalar each iteration. Y = X ^ 2; attempts invalid matrix power for vectors. Y = X .* X; is correct.
Final Answer:
Y = X .* X; -> Option A
Quick Check:
Element-wise multiply vector by itself = square [OK]
Hint: Use .* to square vectors element-wise [OK]
Common Mistakes:
Using ^ instead of .^ or .* for element-wise power
Overwriting output inside loop
Using loops instead of vectorization
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.