4 Commits
Author SHA1 Message Date
kachelto100370 786aa2e6d8 working on imageinput 2025-11-25 10:53:28 +01:00
kachelto100370 58df4199b5 smal gitignore 2025-11-23 16:33:44 +01:00
kachelto100370 fb18b75b60 working on imputimage 0 test passing 2025-11-23 16:33:22 +01:00
kachelto100370 7f3c6d1d3f first pass matrix add, ohne broadcasting 2025-11-20 16:04:01 +01:00
4 changed files with 65 additions and 30 deletions
+6
View File
@@ -2,3 +2,9 @@ mnist
runTests runTests
*.o *.o
*.exe *.exe
.vscode/settings.json
.vscode/launch.json
.vscode/settings.json
.vscode/settings.json
runImageInputTests
testFile.info2
+29 -3
View File
@@ -15,10 +15,36 @@ GrayScaleImage readImage()
// TODO Vervollständigen Sie die Funktion readImages unter Benutzung Ihrer Hilfsfunktionen // TODO Vervollständigen Sie die Funktion readImages unter Benutzung Ihrer Hilfsfunktionen
GrayScaleImageSeries *readImages(const char *path) GrayScaleImageSeries *readImages(const char *path)
{ {
unsigned short * numImages;
unsigned short * breiteBilder;
unsigned short * laengeBilder;
GrayScaleImageSeries *series = NULL; GrayScaleImageSeries *series = NULL;
FILE *file = fopen("mnist_test.info2","rb"); FILE *file = fopen(*path,"rb");
char headOfFile; char * headOfFile;
series = malloc();
fread(headOfFile, sizeof(FILE_HEADER_STRING),1, file); //liest den header ein und überprüft ob korrekte datei
if(strcmp(headOfFile, FILE_HEADER_STRING) != 0)
return NULL;
// liest numIMages, breite und länge der Bilder ein
fseek(file, sizeof(FILE_HEADER_STRING), SEEK_SET);
fread(numImages, sizeof(short), 1, file);
fseek(file, sizeof(short), SEEK_CUR);
fread(breiteBilder, sizeof(short), 1, file);
fseek(file, sizeof(short), SEEK_CUR);
fread(laengeBilder, sizeof(short), 1, file);
series = malloc(*numImages * *breiteBilder * *laengeBilder * sizeof(short));
for(int i = 0; i < numImages; i++)
{
}
return series; return series;
} }
+7 -7
View File
@@ -57,12 +57,12 @@ imageInputTests: imageInput.o imageInputTests.c $(unityfolder)/unity.c
# -------------------------- # --------------------------
# Clean # Clean
# -------------------------- # --------------------------
#clean: clean:
#ifeq ($(OS),Windows_NT) ifeq ($(OS),Windows_NT)
# del /f *.o *.exe del /f *.o *.exe
#else else
# rm -f *.o mnist runMatrixTests runNeuralNetworkTests runImageInputTests rm -f *.o mnist runMatrixTests runNeuralNetworkTests runImageInputTests
#endif endif
# clean für windows clean für windows
clean: clean:
rm -f *.o *.exe rm -f *.o *.exe
+22 -19
View File
@@ -41,25 +41,28 @@ MatrixType getMatrixAt(const Matrix matrix,
return value; return value;
} }
Matrix add(const Matrix matrix1, const Matrix matrix2) { Matrix add(const Matrix matrix1, const Matrix matrix2) {
Matrix result;
const int cols1 = matrix1.cols;
const int rows1 = matrix1.rows;
const int cols2 = matrix2.cols;
const int rows2 = matrix2.rows;
const int colsEqu = (matrix1.cols == matrix2.cols) ? 1 : 0;
const int rowsEqu = (matrix1.rows == matrix2.rows) ? 1 : 0;
if(colsEqu && rowsEqu)
{
Matrix result = createMatrix(matrix1.rows, matrix1.cols);
for(int i = 0; i < rows1; i++)
{
for (int j = 0; j < cols1; j++)
{
int valueM1 = getMatrixAt(matrix1, i, j);
int valueM2 =getMatrixAt(matrix2, i, j);
int sum = valueM1 + valueM2;
setMatrixAt(sum, result,i,j);
}
}
// Ergebnismatrix return result;
Matrix result; }
// Broadcasting nur bei Vektor und Matrix, Fehlermeldung bei zwei unpassender
// Matrix
if (matrix1.rows != matrix2.rows) {
// check, which one is smaller
// realloc
}
if (matrix1.cols != matrix2.cols) {
}
// Speicher reservieren
// Matrix addieren
return result;
} }
Matrix multiply(const Matrix matrix1, const Matrix matrix2) { return matrix1; } Matrix multiply(const Matrix matrix1, const Matrix matrix2) { return matrix1; }