.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); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д