Well, no. Your vector [ cos(t),sin(s),rand()*18]
gives a 20-dimensional object. Let me try to explain why…
Consider a function from \mathbb{R}^2 \to \mathbb{R}^{20}, i.e., for the sake of argument let’s take a linear one, but you can easily replace it by something non-linear, e.g., some neural network:
params = randn(20, 2)
emb(x) = params * x # Note: 2d-input and 20d-output
Now, two-dimensional points can be mapped into the 20-dimensional space by emb
:
points2D = [randn(2) for i=1:10] # 10 2d points
points20D = [emb(x) for x in points2D] # points mapped into 20d
Note that even though each point of points20D
is 20-dimensional, it is actually determined by two values alone, namely the original 2-dimensional point which was passed through emb
. In this sense it is a 2-dimensional structure as it actually only has 2 degrees of freedom, i.e., independent degrees of variation.
Now, when adding noise to that structure, i.e.,
noisy_points20D = [x .+ 0.1 * randn(20) for x in points20D]
we formally get a 20-dimensional structure as we now have 20 degrees of freedom. (When the noise is small compared to the variation induced by the original 2-dimensional points, we can still consider it close to a 2-dimensional structure though).
In any case, your original vector
v = [cos(m), sin(m), rand(1), ..., rand(1)]
defines a 19-dimensional structure as only the first two dimensions obey a constraint, i.e., v_1 = \cos(m), v_2 = \sin(m) \; \mathrm{for}\; m \in \mathbb{R}. The other 18 dimensions are all independent and unconstrained.
Thus, in order to define a 3-dimensional structure you need a function taking 3-dimensional inputs to 20-dimensional outputs.
Disclaimer: The above explanation is supposed to give an intuition. I have deliberately avoided terminology such as embedding or manifold which require quite some mathematical background in order to define and understand properly.