Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

I Why 2 vectors are not the same in matlab?

  1. May 17, 2017 #1
    I have 2 vectors:

    a = 1.0e-04*[0.110000000000000 0.140000000000000 0.140000000000000 0.140000000000000];
    b = [0.000011000000000 0.000014000000000 0.000014000000000 0.000014000000000];

    by look at by eyes, it seems similar; but when I use this command:

    a == b

    then I got:

    ans =
    1×4 logical array
    0 0 0 0

    The expectation is:

    ans =
    1×4 logical array
    1 1 1 1

    Does anyone knows what wrong with this command in the matlab?

    Thank you.
  2. jcsd
  3. May 17, 2017 #2


    User Avatar

    Staff: Mentor

    Rounding error? What happens if you show the values of the a vector after the multiplication is done? Can you try a shift right by 4 places instead of using the multiplication?
  4. May 17, 2017 #3


    Staff: Mentor

    It's possible that after multiplying each element of a by 10^(-4), what is actually stored in a is slightly different from the numbers stored in b. For example, the first element of a might be something like 0.000011000000002 .
    Floating point arithmetic is notorious in this way. Some decimal value are stored exactly, such as 2.5, .75, but others, such as 0.1 are stored in only an approximate form.
  5. May 18, 2017 #4
    @berkeman: if I shift right by 4 places instead of using the multiplication, I will have what I want, that is vector [1 1 1 1], that is no surprise, but the thing I am working on is very small number (in nano values 1e-9) and sometime matlab gives me a vector, example: a = 1.0e-04*[ 1 1 1 1] and sometimes a = [0.0001000000 , 0.0001000000, 0.0001000000, 0.0001000000] , that make me confuse and also think about very small numbers are exist (maybe in pico)
  6. May 18, 2017 #5
    @Mark44: that could be, i am happy if some very small decimal number exist (my expectation in nano or pico values) but is there any way to detect them (if they are exist), even I used command format long and still do not see any change.
  7. May 24, 2017 #6


    User Avatar
    Science Advisor

    Code (Text):
    >> a - b
    Also, the MATLAB documentation suggests (under 'eq, ==') a way that avoids the problem when trying to compare floating point numbers:
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?
Draft saved Draft deleted