• Регистрация
leo-go
leo-go0.00
н/д
  • Написать
  • Подписаться

Чтение Mat файла с использованием MATLAB C API

17.02.2021
Здравствуйте, пытаюсь прочитать mat файл, хранящий информацию о шинах, и создать структуру отражающую все шины в этом файле. Пытаюсь сделать это через функицю mxGetDimensions, но при разименовании пол...

Здравствуйте, пытаюсь прочитать mat файл, хранящий информацию о шинах, и создать структуру отражающую все шины в этом файле. Пытаюсь сделать это через функицю mxGetDimensions, но при разименовании полученной ссылки получаем ноль, хотя mxGetNumberOfDimensions говорит, что их минимум два. Прикладываю мат файл и используемый код во вложенные файлы

Файлы

  • TestBus.mat
  • TestMatRead.cpp

Теги

    17.02.2021

    Комментарии

    • Nikolay
      Nikolay+1525.82
      18.02.2021 14:04

      Добрый день.

      Я бы советовал посмотреть на то, что возвращает mxGetDimensions. А возвращает он mwSize (подробнее - https://www.mathworks.com/help/releases/R2020b/matlab/apiref/mwsize.html).

      Сделайте отдельную переменную типа mwSize и посмотрите ее содержимое.

      К слову, я совсем не уверен, что вы сможете таким образом получить информацию о шинах. Если вам в проекте надо использовать структуры, которые соответствуют шинам, то надо идти от Си к Simulink. Посмотрите на Simulink.importExternalCTypes

      • leo-go
        leo-go0.00
        18.02.2021 14:12

        Здраствуйте, благодарю за ответ, проблема в том, что я смотрю значение mwSize, и мне выдаёт, ответ = 0, однако я точно знаю, что имя Dimensions не равно нулю. А по второй части ответа, мне требуется получать эти значения не для работы с симулинком. Моя задача для себя выделить эти объекты, для автоматизации обработки результатов в своей программме вне матлаба

        • Nikolay
          Nikolay+1525.82
          19.02.2021 11:41

          Я бы на вашем месте сейчас бы значительно упростил код:

          qDebug() << QString("Dimension : %1 \n").arg(*mxGetDimensions(pa));

          Давайте сначала результат mxGetDimensions(pa) складывать в отдельную переменную сначала и будем смотреть, что говорит нам отладчик. Как только мы увидим, что нам возвращает mxGetDimensions, мы увидим что не так.