How to square each element of a vector
597 views (last 30 days)
Show older comments
Hello everybody I have a very simple problem, but I don't know how to solve it.
I want to create a row vector from a certain range between two limits. So, given the limits 'a' and 'b', I do: x = [a:0.1:b] %I obtain a vector with equally spaced values between 'a' and 'b', with a 0.10 step.
The problem is that now, I need to elevate each value of 'x' to square, and so, obtain a new vector, let's say 'y', that will contain the values of 'x' squared. How do I do this???
Example: x = [0:1:4] ans = 0 1 2 3 4
I need y to be: 0 1 4 9 16
Thanks everyone!
Accepted Answer
Dr. Seis
on 31 Jan 2012
y = x.^2;
Using the "." will effectively perform element-by-element mathematical operations. So if you had 2 MxM matrices, say A and B, then:
C = A*B;
Would yield normal matrix multiplication, while:
C = A.*B;
Would yield element-by-element multiplication of both matrices.
See example below:
>> A = eye(2)
A =
1 0
0 1
>> B = rand(2)
B =
0.9594 0.1745
0.9917 0.9862
>> A*B
ans =
0.9594 0.1745
0.9917 0.9862
>> A.*B
ans =
0.9594 0
0 0.9862
0 Comments
More Answers (4)
the cyclist
on 31 Jan 2012
y = x.^2;
If you don't need the intermediate variable x, then you could simply have done
y = (a:0.1:b).^2;
0 Comments
Saurabh Palve
on 23 Jan 2020
x=[2 5 1 6]^2
2 Comments
John D'Errico
on 12 Mar 2023
Edited: John D'Errico
on 12 Mar 2023
For any newbies who might see this question, of the many answers I see here, all the others are correct, but this answer by @Saurabh Palve is not correct in MATLAB. Without a dot in that operator, that line will fail.
See Also
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!