# Understand a command line to create a matrix

4 views (last 30 days)
Mark Sc on 8 Oct 2021
Commented: Geoff Hayes on 8 Oct 2021
Hi all,
I am trying to write the following matlab line into another program, I already found it in the internet, it works perfectly, but I can not understand excatly how it work ??
clc; nelments= 3; npoint= 5;
connect=(1:npoint) + (npoint-1)*(0:nelments-1).'

Geoff Hayes on 8 Oct 2021
@Mark Sc - this is an interesting piece of code. Given that
>> x = (1:npoint)
x =
1 2 3 4 5
and that
>> y = (npoint-1)*(0:nelments-1).'
y =
0
4
8
we are trying to add a 1x5 matrix with a 3x1 matrix with the output being a 3x5. Looking at the plus for 2-D inputs, if one input is a column vector, and the other is a row vector then your output (in this case) will be that 3x5 matrix where we add 0 to each element of x to get the first row of the new matrix, 4 to each element of x to get the second row of the new matrix, and 8 to each element of x to get the third row.
>> x + y
ans =
1 2 3 4 5
5 6 7 8 9
9 10 11 12 13
##### 2 CommentsShowHide 1 older comment
Geoff Hayes on 8 Oct 2021
@Mark Sc - I tried doing something similar in Python but observed an error
Traceback (most recent call last):
File "py-add.py", line 4, in <module>
c=a+b
ValueError: operands could not be broadcast together with shapes (5) (3)
so from this one example it seems that it behaves a little differently than MATLAB. It shouldn't be too hard to write the code to do what you want though.