find the element location

1 view (last 30 days)
Harsh Rob
Harsh Rob on 19 Aug 2019
Commented: Harsh Rob on 20 Aug 2019
I have returns marked in a column of 1*20million column. It has a specific value as -10, but I am not able to find out where it is.
I have tried using
find(returns(:,1)==-10)
but couldnt interpret the ouput. -
ans =
0×1 empty double column vector
When I check this matrix, its blank and does not even give any answer. Can someone guide on this?
I also wanted to plot these returns and histogram for this-
For plot-
plot(returns)
But I just get the x and the y axis. The reason could be i have 20 million rows and thus, its not visible in the graph. Can we show these values, in this graph, rather than just showing the x and y axis as it gives a vague picture.
For histogram-
nbins = 4000; %i have calculated the appropriate bins
hist(filteredreturns,nbins)
However, I am just getting everything at a point. I want to see the distribution and its should mostly be normally distributed or highly skewed towards right.

Accepted Answer

Star Strider
Star Strider on 19 Aug 2019
You have encountered ‘floating-point approximation error’. Most numbers are not exactly represented in floating-point precision (especially if they are the result of computations), so testing for them exactly is not usually productive. See the documentation on Floating-Point Numbers for an extended discussion.
Taking that into account, finding the indices of the ‘-10’ elements is relatively straightforward.
For example:
Returns = (0.5-rand(1, 1E+4))*30; % Test Vector
Lv = ismembertol(Returns, -10, 0.01); % Logical Vector Result
Indices = find(Lv); % Index Positions
Use your vector instead of my test vector. Experiment with the tolerance value (here 0.01) to get the result you want.
See if plotting with a marker (instead of a line) will make your data more visible. I cannot offer you any advice with respect to the histogram. We do not have your data or know what result you want, so you will need to experiment.

More Answers (1)

Guillaume
Guillaume on 19 Aug 2019
If find returns empty, then we can safely say that exact -10 is not in that first column. Perhaps the number you're looking for is very close to 10 but not exact 10 (e.g. it could be -10.0000000000000017764). To find the nearest number to -10:
[~, loc] = min(abs(returns(:, 1) + 10)
diff_from_10 = returns(loc, 1) + 10
As for the rest, I don't understand what you're saying.
Note that hist has long been deprecated. histogram is the recommended function now.

Categories

Find more on Data Distribution Plots in Help Center and File Exchange

Tags

Products


Release

R2019a

Community Treasure Hunt

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

Start Hunting!