.NET 4.x Дозапись в binary mat файл - C#
Формулировка задачи:
Привет, заранее прошу прощение, если тема создана не там.
Идея такова. Имеются постоянно прибывающие данные каждую секунду, которые нужно сохранять. После требуется с ними работать в Matlab. В данный момент реализовал только запись в обычный бинарник, а после по требованию весь его считываю в память и пере сохраняю в виде .mat файла. Это не есть правильно. Хотелось бы писать сразу в .mat файл с возможность дозапись в файл. Имеется библиотека для .NET 4.x csmatio. Она позволяет с легкостью записать .mat файл, но нет возможность дозаписать в файл. Единственный выход это вручную формировать бинарный .mat файл. Имеется вроде как даже не большой материал. Но мне очень тяжело в нем разобраться. Может кто сталкивался с подобным и сможет мне помочь?
Решение задачи: «.NET 4.x Дозапись в binary mat файл»
textual
Листинг программы
- using System;
- using System.Globalization;
- using csmatio.io;
- using csmatio.types;
- public class Program
- {
- static double[][] GetNewMatrix(double[][] oldMatrix, double[] addArray)
- {
- double[][] newMatrix = new double[oldMatrix.Length + 1][];
- for (int i = 0; i < oldMatrix.Length; i++)
- {
- newMatrix[i] = new double[oldMatrix[i].Length];
- for (int j = 0; j < oldMatrix[i].Length; j++)
- {
- newMatrix[i][j] = oldMatrix[i][j];
- }
- }
- newMatrix[newMatrix.Length - 1] = addArray;
- return newMatrix;
- }
- static void Main(string[] args)
- {
- string received = "-99.0, 8.0, -77.2";
- double[][] oldMatrix = null;
- string[] arrStr = received.Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries);
- double[] doubles = Array.ConvertAll(arrStr, delegate (string s) { return Double.Parse(s, CultureInfo.InvariantCulture); });
- // create a reader for the file
- MatFileReader mfr = new MatFileReader("data3.mat");
- // get a reference to our matlab 'squares' double matrix
- MLDouble mlSquares = (mfr.Content["matrix"] as MLDouble);
- if (mlSquares != null)
- {
- Console.WriteLine("old matrix : ");
- // now get the double values
- oldMatrix = mlSquares.GetArray();
- foreach (double[] row in oldMatrix)
- {
- Console.WriteLine();
- foreach (double col in row)
- Console.Write(col + " ");
- }
- }
- Console.WriteLine();
- Console.WriteLine("\nnew matrix : ");
- double[][] newMatrix = GetNewMatrix(oldMatrix, doubles);
- foreach (double[] row in newMatrix)
- {
- Console.WriteLine();
- foreach (double col in row)
- Console.Write(col + " ");
- }
- // пересохраняем файл
- MLDouble mlDoubleArray = new MLDouble("matrix", newMatrix);
- List<MLArray> mlList = new List<MLArray>();
- mlList.Add(mlDoubleArray);
- MatFileWriter mfw = new MatFileWriter("data3.mat", mlList, false);
- Console.ReadKey(true);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д