I am trying to find what's the number on the array for the 1000 value. This is my code:
size = linspace(420, 2200, 100000);
size1000 = find(size==1000);
It returns an empty variable for size 1000. If I actually change 1000 with 420 it actually returns 1 like it should. Why is this not working?
The result of
find is empty because 1000 is not in the array and isn't expected to be. Using the inputs to
linspace, your expected step size is going to be
(2200 - 420) / 100000 % 0.0178
With this step size and a starting value of
420, you're never going to hit the value
1000 exactly. The closest values in the array are
999.983. If you want to identify values that are close to 1000, you can do something like the following instead.
inds = find(abs(size - 1000) < 0.01);
As a side-note, do not use
size as the name of a variable since that is the name of a built-in MATLAB function and using it as a variable name can result in unexpected behavior.
You can also use logical indexing to simply remove all of the values below 1000, and then you know that the first component of what is left will be your answer....
a = size(size>1000); a(1)
For what it is worth, please PLEASE do not use
size as a variable name.
size is an important MATLAB function to get the size of a matrix. For example,
>> size(randn(2,3)) ans = 2 3
However, when you declare a variable named
size, like you do in your code, you will hide this function. So now, at some point later in your code, if you called
size(randn(2,3)), you will get the cryptic error
Subscript indices must either be real positive integers or logicals.
These are extremely tricky to track down, so please avoid it.