Why is 1/ones(3,1) OK while 1/ones(1,3) is not OK?

2 views (last 30 days)
When I tried the code
matlab said this is invalid because the dimension is not matched.
Then I tried the code
this returns the result
ans =
1 0 0
I don't know why the ans is like this.
  1 Comment
Stephen23 on 19 Sep 2019
Edited: Stephen23 on 19 Sep 2019
"I don't know why the ans is like this."
Did you read the mrdivide documentation, to know what you are actually calculating?:

Sign in to comment.

Accepted Answer

David Goodmanson
David Goodmanson on 19 Sep 2019
Edited: David Goodmanson on 20 Sep 2019
Hi Yuki,
In the expression x = 1/ones(3,1) multiplying both sides on the right by ones(3,1) gives
x*ones(3,1) = 1.
The row vector x = [1 0 0] fills the bill, since
[1 0 0] x [1
1 = 1.
Note that the answer is not unique, since
x = [0 1 0], x = [1/3 1/3 1/3] etc. all work just as well.
As to why ones(1,3) errors out, in that case you would have
x*ones(1,3) = 1.
If you review the rule for sizes of rows and columns in matrix multiplication, i.e. (mxn) x (nxq) = mxq, you will find that the eqn above does not work.

More Answers (0)


Find more on Resizing and Reshaping Matrices 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!

Translated by