find function and vectors gives Empty matrix: 1-by-0
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
close all
clear variables
clc
w = [-65:0.1:10];%Error membership x axis range
Negbig_error = trapmf(w,[-65 -65 -62 -10]);
ant1 = Negbig_error(find(w == -25.8))
w ranges from -65 to 10 in my code with step of 0.1 but matlab cannot find y axis intercept when w = -25.8
returns error code: Empty matrix: 1-by-0
0 Kommentare
Antworten (1)
Michael Haderlein
am 10 Mär. 2015
That's a floating point arithmetics problem. 0.1 cannot be represented exactly. Creating the array your way, you get something like
>> -65+0.1*392
ans =
-25.8000
but that's not exactly -25.8:
>> (-65+0.1*392)+25.8
ans =
3.5527e-15
If I remember correctly, Matlab actually creates such arrays a bit more intelligently than sketched here, but the general issue remains. If you want to search for w==-25.8, you have to search for something close to this value, such as
>> w=-65:.1:10;
>> Negbig_error = trapmf(w,[-65 -65 -62 -10]);
>> w(abs(w+25.8)<.01)
ans =
-25.8000
>> Negbig_error(abs(w+25.8)<.01)
ans =
0.3038
find() is not necessary here, so I skipped it.
5 Kommentare
Michael Haderlein
am 11 Mär. 2015
It's just logical indexing. If you have an array, say [10 20 30 40 50], you can pick elements either by their position number (myarray(2) will return 20 and myarray([2 4]) will return [20 40]) or you can pick them with logicals: myarray([false true false true false]) will also return [20 40]. That's a convenient way to select elements based on their value, e.g. myarray<30 will be [true true false false false]. Use this as logical index and you'll get the values of all elements fulfilling the condition.
Stephen23
am 11 Mär. 2015
@Amit Aryal: logical indexing is much faster than using find, and can be calcualted directly in many situations, e.g. to remove all negative values from a vector:
A = [1,-3,2,4,-9,];
A(A<0) = []
There are several different indexing methods in MATLAB, and they are each useful in different situations. You can learn about them here:
Siehe auch
Kategorien
Mehr zu Data Type Conversion finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!