Запись и чтение из .txt файлов с помощью ячеек - PullRequest
0 голосов
/ 25 сентября 2018

Я довольно новичок и неопытен в MATLAB, но очень хочу учиться.Я создал класс TestData.Этот класс содержит объекты для хранения различных данных в виде массивов.Первоначально я собирался использовать Struts;однако меня попросили не использовать структуры, а вместо этого сохранить данные labels и данные units в виде массива ячеек, а затем сохранить фактические данные в числовом массиве.Итак, проблема:

Допустим, я создаю экземпляр объекта в CW с именем myTestData.Затем я использую этот экземпляр и функции setLabel и setUnit, чтобы сгенерировать два массива ячеек 1XN (N = 4, для этого примера).Таким образом, у меня есть, например, {Freq.}, {Power}, {Phase}, {Volts} как массив ячеек 1X4 в colLabels и {Hz}, {dB}, {Degrees}, {Vpp} как массив ячеек 1X4 в colUnits.

Затем я записываю эти два массива в текстовый файл, используя myTestdata=myTestData.writeDataToFile().Данные отлично выглядят в файле.Но затем, когда я пытаюсь импортировать этот файл обратно в объект, используя функцию readDataFromFile, я получаю все четыре метки в одной ячейке tempArray и все четыре единицы в другой.Я бы хотел, чтобы tempArray содержал эти данные в двух отдельных массивах ячеек 1X4, которые можно передать обратно в функцию setLabel.

Правильно ли я думаю об этом?В конечном счете, я хочу, чтобы этот объект мог импортировать файл .txt и сканировать его на наличие меток столбцов и единиц, а затем данных (которые я не включил в код).Он также должен иметь возможность экспортировать данные в файл .txt в том же формате.Опять же, я новичок в MATLAB, поэтому, если у вас есть какие-либо предложения, которые, по вашему мнению, я должен рассмотреть, пожалуйста, дайте мне знать.Кроме того, если вы думаете о любых проблемах, которые могут возникнуть с числовым массивом, не стесняйтесь, дайте мне знать!Я стремлюсь узнать как можно больше об этом языке.

Заранее спасибо и дайте мне знать, если я могу предложить что-нибудь еще.

classdef TestData
properties
    metaData   % stores meta data in Nx2 array
    data       % stores data in PxQ array
    colLabels  % labels columns
    colUnits   % provides units
    tempArray
end

methods

    function this = TestData() %constructor
        this.colLabels = [];
        this.colUnits  = [];
        this.tempArray = [];
    end %TestData()

    function this = setLabel(this, labels) % takes a 1XN cell array
        size(labels,2)
        for i = 1:size(labels,2)
            M = size(this.colLabels, 2)+ 1;
            this.colLabels{1,M} = labels{1,i};
        end %for
    end %setLabel

    function this = setUnit(this, units) % takes a 1XN cell array
        for i = 1:size(units,2)
            M = size(this.colUnits, 2)+ 1;
            this.colUnits{1,M} = units{1,i};
        end %for            
    end %setUnit

    function this = writeDataToFile(this)
       fid = fopen('data.txt', 'w');
       fprintf(fid, '%-10s', this.colLabels{:});
       fprintf(fid, '\n');
       fprintf(fid, '%-10s', this.colUnits{:});
       fclose(fid);
    end %writeDataToFile

    function this = readDataFromFile(this, thisFile);
        this.tempArray = importdata(thisFile);
    end %readDataFromFile
end %methods
end %class
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...