使用单元数组从.txt文件写入和读取

时间:2018-09-25 17:03:13

标签: matlab

我还很陌生,对MATLAB经验不足,但真的很想学习。我创建了一个类TestData。此类包含以数组形式存储各种数据的对象。最初,我将使用结构。但是,有人要求我不要使用结构,而是以单元格数组的形式存储数据labels和数据units,然后将实际数据存储在数字数组中。所以,问题在于:

让我们说我在CW中创建了名为myTestData的对象实例。然后,我使用该实例以及函数setLabelsetUnit来生成两个1XN单元数组(在此示例中,N = 4)。因此,例如,我将{Freq.}, {Power}, {Phase}, {Volts}作为colLabels中的1X4单元格数组,将{Hz}, {dB}, {Degrees}, {Vpp}作为colUnits中的1X4单元格数组。

接下来,我使用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

0 个答案:

没有答案