MATLAB can't create a vector -10e-6:10e-6 of a certain length. Anyone knows how to do it?

8 views (last 30 days)
Suppose, h = 10e-6 and l = 125e-6.
I want to create two vectors of the same length, say 51. The first vector goes from -h to h, and the second vector goes from -l to l.
MATLAB computes -10e-6:10e-6 as just -10e-6, which I think is because I am dealing with very small numbers here. How can I fix this? If instead I also specify the step size -10e-6:2e-6:10e-6, then it works fine.
Thank you!
  2 Comments
KALYAN ACHARJYA
KALYAN ACHARJYA on 31 Jul 2018
Edited: KALYAN ACHARJYA on 31 Jul 2018
You can use linespace function to the required vector length.
vector=linespace(initial_vale,last_value,length_required)

Sign in to comment.

Answers (1)

Guillaume
Guillaume on 31 Jul 2018
Edited: Guillaume on 31 Jul 2018
This is very basic matlab here.
a:b
generates numbers from a to b in step of 1, so it generates [a, a+1, a+2, ..., a+n] with a+n <= b. So yes, -10e-6:10e-6 only generates -10e-6 since -10e-6 + 1 is greater than 10e-6.
a:k:b
generates numbers from a to b in step of k, so it generates [a, a+1*k, a+2*k, ..., a+n*k], with a+n*k <= b. So you could use for example -10e-6:10e-6:10e-6 to generate 21 numbers.
linspace(a, b, n)
generates exactly n numbers by spreading them evenly between a and b, including them. This is probably what you want here, since it sounds like you want exactly 51 numbers
linspace(-10e-6, 10e-6, 51)
  1 Comment
Neelima Dahal
Neelima Dahal on 31 Jul 2018
I actually got it work. -h:h/n:h and -l:l/n:l where n is any factor does the trick. I wasn't thinking simple. Thanks anyways! :)

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!