.NET 4.x Дозапись в binary mat файл - C#

Узнай цену своей работы

Формулировка задачи:

Привет, заранее прошу прощение, если тема создана не там. Идея такова. Имеются постоянно прибывающие данные каждую секунду, которые нужно сохранять. После требуется с ними работать в Matlab. В данный момент реализовал только запись в обычный бинарник, а после по требованию весь его считываю в память и пере сохраняю в виде .mat файла. Это не есть правильно. Хотелось бы писать сразу в .mat файл с возможность дозапись в файл. Имеется библиотека для .NET 4.x csmatio. Она позволяет с легкостью записать .mat файл, но нет возможность дозаписать в файл. Единственный выход это вручную формировать бинарный .mat файл. Имеется вроде как даже не большой материал. Но мне очень тяжело в нем разобраться. Может кто сталкивался с подобным и сможет мне помочь?

Решение задачи: «.NET 4.x Дозапись в binary mat файл»

textual
Листинг программы
  1. using System;
  2. using System.Globalization;
  3. using csmatio.io;
  4. using csmatio.types;
  5. public class Program
  6. {
  7.     static double[][] GetNewMatrix(double[][] oldMatrix, double[] addArray)
  8.     {
  9.         double[][] newMatrix = new double[oldMatrix.Length + 1][];
  10.         for (int i = 0; i < oldMatrix.Length; i++)
  11.         {
  12.             newMatrix[i] = new double[oldMatrix[i].Length];
  13.             for (int j = 0; j < oldMatrix[i].Length; j++)
  14.             {
  15.                 newMatrix[i][j] = oldMatrix[i][j];
  16.             }
  17.         }
  18.         newMatrix[newMatrix.Length - 1] = addArray;
  19.         return newMatrix;
  20.     }
  21.  
  22.  
  23.     static void Main(string[] args)
  24.     {
  25.         string received = "-99.0, 8.0, -77.2";
  26.         double[][] oldMatrix = null;
  27.         string[] arrStr = received.Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries);
  28.         double[] doubles = Array.ConvertAll(arrStr, delegate (string s) { return Double.Parse(s, CultureInfo.InvariantCulture); });
  29.  
  30.         // create a reader for the file
  31.         MatFileReader mfr = new MatFileReader("data3.mat");
  32.  
  33.         // get a reference to our matlab 'squares' double matrix
  34.         MLDouble mlSquares = (mfr.Content["matrix"] as MLDouble);
  35.         if (mlSquares != null)
  36.         {
  37.             Console.WriteLine("old matrix : ");
  38.             // now get the double values
  39.             oldMatrix = mlSquares.GetArray();
  40.             foreach (double[] row in oldMatrix)
  41.             {
  42.                 Console.WriteLine();
  43.                 foreach (double col in row)
  44.                     Console.Write(col + " ");
  45.             }
  46.         }
  47.         Console.WriteLine();
  48.         Console.WriteLine("\nnew matrix : ");
  49.         double[][] newMatrix = GetNewMatrix(oldMatrix, doubles);
  50.         foreach (double[] row in newMatrix)
  51.         {
  52.             Console.WriteLine();
  53.             foreach (double col in row)
  54.                 Console.Write(col + " ");
  55.         }
  56.          // пересохраняем файл
  57.         MLDouble mlDoubleArray = new MLDouble("matrix", newMatrix);
  58.         List<MLArray> mlList = new List<MLArray>();
  59.         mlList.Add(mlDoubleArray);
  60.         MatFileWriter mfw = new MatFileWriter("data3.mat", mlList, false);
  61.         Console.ReadKey(true);
  62.     }
  63. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы