Vinnaren i pepparkakshustävlingen!
2015-04-14, 12:42
  #1
Medlem
Jag har ungefär följande situation:

Jag har ett tal 'num' och en vektor 'vec' och med format short det det ut ungefär såhär:

Kod:
num = 662.3000

vec = 

Columns 1 through 7

 662.2000  662.3000  662.4000  662.5000  662.6000  662.7000  662.8000


Jag vill veta om något element i 'vec' är lika med 'num'. I det här läget är det uppenbart att detta gäller för det andra elementet i 'vec'. Testet säger dock att så är inte fallet, och ändrar jag till format long ser det ut såhär:

Kod:
num = 6.623000000000001e+02

vec =

1.0e+02 *

  Columns 1 through 7

   6.622000000000001   6.622999999999999   6.624000000000000   6.625000000000000   6.626000000000000   6.627000000000001   6.627999999999999


och här ser vi att det tydligen inte alls är så att det andra elementet i 'vec' är lika med 'num'.

Hur kommer jag runt det här? Jag vet att det som står i format short "är rätt", det är nämligen samplingstiderna för en signal samplad i 10 Hz, så Matlab har meckat med mina värden.

Nån som vet?
Citera
2015-04-14, 18:27
  #2
Medlem
Om du inte är säker på att värdena kommer att mactha ner till sista decimal får du bestämma en acceptabel tolerans och istället för att kolla om värdet är exakt lika med det du testar mot så kollar du om det ligger inom felmarginalen. Ett sätt att gölra det är att skapa en toleransvariabel e och testa om absolutbeloppet(tal-mätvärde)<e
__________________
Senast redigerad av Linara 2015-04-14 kl. 18:35.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback