Exclude the NaN, 0, empty and Inf values from the analysis.
99 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Luccas S.
le 11 Fév 2022
Commenté : Luccas S.
le 11 Fév 2022
When calculating the PE value, I would like it not to calculate when Ia_future = 0, Nan or Inf.
I believe the way I did it, it's still calculating. Because some PE values are still Inf.
Or if there was some way to exclude those values. The problem is that I need to plot a (t,PE) graphic and if I exclude some PE values the two will have different dimensions and I will not be able to analyze the graph..
for n = 4:size(t,1)
X = [Ia(n-1,1) Ia(n-2,1) ; Ia(n-2,1) Ia(n-3,1)];
future = [Ia(n,1) ; Ia(n-1,1)];
C = X\future;
Ia_future(n,1) = C(1,1)*Ia(n,1)+C(2,1)*Ia(n-1,1);
if (isnan(Ia_future(n, 1)) || isinf(Ia_future(n,1) || isempty(Ia_future(n,1) || Ia_future(n,1)==0))) %|| %(isnan(p(n, 1)) || p(n, 1) == 0)
continue
end
PE(n,1)=(Ia(n,1)+Ia_future(n,1))/(2000/5);
end
0 commentaires
Réponse acceptée
Benjamin Thompson
le 11 Fév 2022
Vectorize your calculations using index vectors. For example:
>> Test = [0 1 inf NaN]
Test =
0 1 Inf NaN
>> Inan = isnan(Test)
Inan =
1×4 logical array
0 0 0 1
>> Iinf = isinf(Test)
Iinf =
1×4 logical array
0 0 1 0
>> Igood = ~isinf(Test) & ~isnan(Test)
Igood =
1×4 logical array
1 1 0 0
Then you can calculate PE as a function of Ia_future outside the for loop, something like:
PE(Igood,1)=(Ia(Igood,1)+Ia_future(Igood,1))/(2000/5);
Only the rows of PE corresponding to where Igood is one will be updated. You may need to calculate the index vector looking at both Ia and Ia_future if they can have bad values in different spots.
2 commentaires
Benjamin Thompson
le 11 Fév 2022
Yes you can define an index vector using any kind of comparison test.
Plus de réponses (1)
Image Analyst
le 11 Fév 2022
Is this helpful:
data = [0, 9, inf, NaN, 42];
mask = (data ~= 0) & isfinite(data)
extractedData = data(mask)
Using isfinite() takes the place/combines both ~isinf() and ~isnan() all into one simple function.
Voir également
Catégories
En savoir plus sur Resizing and Reshaping Matrices dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!