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

2 views (last 30 days)
Yuki Koyama on 19 Sep 2019
Edited: David Goodmanson on 20 Sep 2019
When I tried the code
1/ones(1,3)
matlab said this is invalid because the dimension is not matched.
Then I tried the code
1/ones(3,1)
this returns the result
ans =
1 0 0
I don't know why the ans is like this.
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?:

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.
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.