Skip to content
Snippets Groups Projects
Commit 2f60b742 authored by kiady.arintsoa's avatar kiady.arintsoa :man_with_turban_tone2:
Browse files

Save results

parent 57602145
No related branches found
No related tags found
No related merge requests found
import sys
import struct
import os
from matplotlib import pyplot as plt
def getVector(path):
components = []
with open(path, "rb") as fr:
byte = fr.read()
fr.close()
name, ext = os.path.splitext(fr.name)
if ext != ".vec":
print("File extension must be \".vec\"")
else:
endianness = byte[0]
endian = '<' if endianness else '>'
size_of_a_component = byte[1]
number_of_component = struct.unpack(endian + 'I', byte[2:6])[0]
for i in range(number_of_component):
components += struct.unpack(endian + 'd', byte[6 + i * 8:6 + (i + 1) * 8])
return components
if len(sys.argv) < 3:
print("Usage python display_vec.py [X.vec] [Y.vec]")
else:
X = getVector(sys.argv[1])
Y = getVector(sys.argv[2])
plt.plot(X, Y)
plt.title("Vector")
plt.xlabel("X")
plt.ylabel("Y")
plt.show()
\ No newline at end of file
import sys
import struct
import os
from matplotlib import pyplot as plt
def getVector(path):
_X = []
_Y = []
with open(path, "rb") as fr:
byte = fr.read()
fr.close()
name, ext = os.path.splitext(fr.name)
if ext != ".vec":
print("File extension must be \".vec\"")
else:
endianness = byte[0]
endian = '<' if endianness else '>'
size_of_a_component = byte[1]
number_of_component = struct.unpack(endian + 'I', byte[2:6])[0]
for i in range(number_of_component):
_X += struct.unpack(endian + 'd', byte[6 + i * 8:6 + (i + 1) * 8])
_Y += struct.unpack(endian + 'd', byte[6 + i * 8:6 + (i + 1) * 8])
return [_X, _Y]
def getLine(path):
_a = 0
_b = 0
with open(path, "rb") as fr:
byte = fr.read()
fr.close()
name, ext = os.path.splitext(fr.name)
if ext != ".pt":
print("File extension must be \".pt\"")
else:
endianness = byte[0]
endian = '<' if endianness else '>'
_a = struct.unpack(endian + 'd', byte[1:9])
_b = struct.unpack(endian + 'd', byte[9:17])
return [_a, _b]
if len(sys.argv) < 3:
print("Usage python display_vec.py [*.vec] [*.pt]")
else:
X, Y = getVector(sys.argv[1])
a, b = getLine(sys.argv[2])
plt.plot(X, Y)
plt.title("Vector")
plt.xlabel("X")
plt.ylabel("Y")
plt.show()
\ No newline at end of file
No preview for this file type
pt1.pt 0 → 100644
6)t?g?
\ No newline at end of file
S?-43?
\ No newline at end of file
pt1u3.pt 0 → 100644
File added
pt2.pt 0 → 100644
&&S?& ?
\ No newline at end of file
%F?E?
\ No newline at end of file
......@@ -49,18 +49,22 @@ int main() {
//Tests
point drtTest;
printf("Test n°1\n");
drtTest.x = 0.8;
drtTest.y = 1.2;
vector vecTest = nuagePoints(drtTest, 30, 0, 20);
printf("Test n°1\n");
export_vector("./vec1.vec", &vecTest);
p = descenteGradient(0.00000001,drtTest,vecTest);
export_point("./pt1.pt", &p);
printf("Sol Numérique Test 1 : a: %f b: %f\n",p.x,p.y);
printf("Test n°2\n");
drtTest.x = 1;
drtTest.y = 1;
vector vecTest2 = nuagePoints(drtTest, 10, 0, 10);
export_vector("./vec2.vec", &vecTest2);
p = descenteGradient(0.00000001,drtTest,vecTest2);
export_point("./pt2.pt", &p);
printf("Sol Numérique Test 2 : a: %f b: %f\n",p.x,p.y);
printf("Test validation croisée\n");
......
No preview for this file type
......@@ -96,8 +96,10 @@ double* validationCroisee(point drtTest, vector g1, vector g2, vector g3){
vector g1g2;
vector_concat(&g1g2,g1,g2);
export_vector("./vec1u2.vec", &g1g2);
// Calculer la descenteGradient sur g1g2
point p1u2 = descenteGradient(0.00000001,drtTest,g1g2);
export_point("./pt1u2.pt", &p1u2);
printf("p1u2 : %f %f\n",p1u2.x,p1u2.y);
// Test sur g3 => point 2.1 de l'Analytique avec a et b les valeurs retournée sur p1u2
erreurs[0] = 0;
......@@ -113,8 +115,10 @@ double* validationCroisee(point drtTest, vector g1, vector g2, vector g3){
vector g1g3;
vector_concat(&g1g3,g1,g3);
export_vector("./vec1u3.vec", &g1g3);
// Calculer la descenteGradient sur g1g3
point p1u3 = descenteGradient(0.00000001,drtTest,g1g3);
export_point("./pt1u3.pt", &p1u3);
printf("p1u3 : %f %f\n",p1u3.x,p1u3.y);
// test sur g2
erreurs[1] = 0;
......@@ -129,8 +133,10 @@ double* validationCroisee(point drtTest, vector g1, vector g2, vector g3){
vector g2g3;
vector_concat(&g2g3,g2,g3);
export_vector("./vec2u3.vec", &g2g3);
// Calculer la descenteGradient sur g2g3
point p2u3 = descenteGradient(0.00000001,drtTest,g2g3);
export_point("./pt2u3.pt", &p2u3);
printf("p2u3 : %f %f\n",p2u3.x,p2u3.y);
// Test sur g1
erreurs[2] = 0;
......
No preview for this file type
......@@ -178,3 +178,45 @@ error_code vector_concat(vector* v1,vector v2, vector v3){
error = ok;
return error;
}
uint8_t get_endianness()
{
uint32_t endianness = 0x01020304;
// Return the endianness by accessing the first byte in memory
// which should be 1 if big-endian and 4 if little-endian
return *((uint8_t *)(&endianness)) == 4;
}
void export_vector(const char *filename, vector *vec)
{
FILE *output = fopen(filename, "w");
vector_metadata_t metadata;
metadata.endianness = get_endianness();
metadata.size_of_a_component = sizeof(type);
metadata.number_of_component = vec->length;
fwrite(&metadata, sizeof(vector_metadata_t), 1, output);
fwrite(vec->content,
metadata.size_of_a_component,
metadata.number_of_component,
output);
fclose(output);
}
void export_point(const char *filename, point *pt)
{
FILE *output = fopen(filename, "w");
point_metadata_t metadata;
metadata.endianness = get_endianness();
fwrite(&metadata, sizeof(point_metadata_t), 1, output);
fwrite(pt,
sizeof(point),
1,
output);
fclose(output);
}
\ No newline at end of file
......@@ -7,6 +7,7 @@ Hesge 2019
#define VECTOR_H
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <stdbool.h>
#include <math.h>
......@@ -27,6 +28,17 @@ typedef struct _vector {
int length; // actual length
} vector;
typedef struct point_metadata{
uint8_t endianness; // 1 = little, 0 = big
} __attribute__((packed)) point_metadata_t;
typedef struct vector_metadata
{
uint8_t endianness; // 1 = little, 0 = big
uint8_t size_of_a_component; // in bytes
uint32_t number_of_component;
} __attribute__((packed)) vector_metadata_t;
typedef enum error_code {
ok, out_of_bounds, memory_error, uninitialized
} error_code;
......@@ -62,4 +74,8 @@ error_code vector_filter(vector *v, bool (*f)(type), vector *rhs);
error_code vector_concat(vector* v1,vector v2, vector v3);
void export_vector(const char *filename, vector *vec);
void export_point(const char *filename, point *pt);
#endif
No preview for this file type
vec1.vec 0 → 100644
File added
File added
File added
vec2.vec 0 → 100644
File added
File added
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment