Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[Data] Raar format

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo allemaal,
Dit zal wel een domme vraag zijn ( nee, kom niet met er zijn geen domme vragen :P ) Maar ik heb een beetje problemen met het dataformat van een bepaald programma dat ik gebruik voor simulaties. De output moet een zesdimensionaal array van floats zijn. ( coordinaten met een bijbehorende vector ).
Alleen, het programma geeft het op in iets dat Binary 8 zou moeten zijn. Ik moet het in matlab importeren maar het lukt niet, zowel als ik direct probeer om het te converten, als ik de string lees en die probeer te converten. Ik heb het al aan een vriend gevraagd die informatica doet maar die weet het niet.

Als ik de data als text file open krijg ik een zooi unicode.

BÜ!ƒwÞ@@µ òx”¨ A°œ…BXbAL’¥·nø@ >ÿ1ÛAJðP“ŒAfvº'xüÀªp ÞQ.A€„šënfA‡Žs enzovoort.
Dit moet dus binary 8 zijn. Mijn vraag is: hoe lees ik dit en maak ik er een een 6 dimensionaal array van floats van? Ik weet niet eens wat de delimiter is.

Bedankt voor het lezen en gelukkig nieuwjaar :)

  • beany
  • Registratie: Juni 2001
  • Laatst online: 14:57

beany

Meeheheheheh

En je denkt dat wij wel weten wat de delimiter is :?

En welk programma is 'een bepaald programma' :?

Dagelijkse stats bronnen: https://x.com/GeneralStaffUA en https://www.facebook.com/GeneralStaff.ua


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Wat is dat "bepaalde programma" dat de export verzorgt? En kun je daar niet in CSV of weet-ik-wat exporteren?
Verwijderd schreef op donderdag 06 januari 2011 @ 14:46:
Als ik de data als text file open krijg ik een zooi unicode.
Wat jij ziet is niet "een zooi unicode" maar een textviewer die heel erg z'n best doet een binair bestand weer te geven ;)
beany schreef op donderdag 06 januari 2011 @ 14:49:
En je denkt dat wij wel weten wat de delimiter is :?
Wie zegt dat er een delimiter is? ;)

[ Voor 80% gewijzigd door RobIII op 06-01-2011 14:55 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • BoAC
  • Registratie: Februari 2003
  • Laatst online: 16:17

BoAC

Memento mori

RobIII schreef op donderdag 06 januari 2011 @ 14:49:

[...]

Wie zegt dat er een delimiter is? ;)
Idd.. misschien zijn het wel 16 bits floats achter elkaar of 32 bits of... noem maar wat. Misschien staat er nog wel meer in :)

  • beany
  • Registratie: Juni 2001
  • Laatst online: 14:57

beany

Meeheheheheh

RobIII schreef op donderdag 06 januari 2011 @ 14:49:
[...]

Wie zegt dat er een delimiter is? ;)
De TS? :P

Dagelijkse stats bronnen: https://x.com/GeneralStaffUA en https://www.facebook.com/GeneralStaff.ua


  • Henk007
  • Registratie: December 2003
  • Laatst online: 06-04 00:29
Het lijkt erop dat ze met binary 8 een floating point van 8 bytes, ofwel 64 bit bedoelen.
Een standaard double volgens IEEE 754 dus.
In welke volgorde deze gegevens precies in het bestand staan kan alleen de maker van die software je vertellen.

  • Mijzelf
  • Registratie: September 2004
  • Niet online
Hoeveel getallen zou de file moeten bevatten, en hoe groot is de files exact?

Verwijderd

Topicstarter
Henk, ik denk dat je gelijk hebt het worden idd doubles. Het zijn dus een berg doubles. Ik denk dat ik de maker van het programma maar moet vragen hoe de files precies in elkaar zitten.

Ik ga contact opnemen met de maker, bedankt allemaal.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Als je weet welke getallen het (exact) zijn zou je ze natuurlijk ook gewoon kunnen proberen vinden in het bestand met een hex-editor (bijv. Winhex heeft een fijne 'view' daarvoor).

[ Voor 22% gewijzigd door RobIII op 06-01-2011 15:26 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Ja, ik heb het gecorrespondeerd over het format en het is al goed. Het bleek te beginnen met een testgetal en het bleek big endian te zijn. Dat was het probleem en daar had ik helemaal niet aan gedacht xD.

Bedankt :)

  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02 16:10

Bozozo

Your ad here?

Niet toevallig OOMMF files?

Daar heb ik laatst ook mee lopen klooien in MATLAB :)

TabCinema : NiftySplit


Verwijderd

Topicstarter
hmhm :) oommf files inderdaad ja. Het is heel simpel maar ja het is big endian :S Heb ik meer dan 2 dagen mee zitten kloten tot ik daar aan dacht. Ik ben nu aan het schrijven om er een mooie matrix van te maken.

[ Voor 146% gewijzigd door Verwijderd op 07-01-2011 16:17 ]


  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02 16:10

Bozozo

Your ad here?

Dat formaat is gewoon netjes gedocumenteerd. Volgende keer eerst even nadenken, dat scheelt veel werk ;)

Waarschijnlijk kun je hier iets mee:

Matlab:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
    % Open file for reading
    file = fopen(omffile,'r');
    
    % Read relevant data from header
    while(1);
        line = fgetl(file);
        if line(1) ~= '#'
            fclose(file);
            error('Incomplete header.');
        end
        
        if size(line,2) > 8 && strcmp(line(3:8),'xnodes')
            xnodes = str2double(line(11:end));
        end
        if size(line,2) > 8 && strcmp(line(3:8),'ynodes')
            ynodes = str2double(line(11:end));
        end
        if size(line,2) > 15 && strcmp(line(3:13),'Begin: Data')
            break;
        end
    end
    
    % Check test number (see ovf specification)
    testbit = fread(file,1,'float','b');
    if testbit~= 1234567
        fclose(file);
        error('Incorrect data format. Remember to save OMF as Binary 4 byte.');
    end    
    
    % Read binary data
    data = fread(file,[3,xnodes*ynodes],'float','b')';
    
    % Close file
    fclose(file);
    
    % reshape data into bitmap format
    data = uint8(127 + round(127 .* data));
    data = flipdim(permute(reshape(data,xnodes,ynodes,3),[2 1 3]),1);

TabCinema : NiftySplit

Pagina: 1