我还很陌生,对MATLAB经验不足,但真的很想学习。我创建了一个类TestData
。此类包含以数组形式存储各种数据的对象。最初,我将使用结构。但是,有人要求我不要使用结构,而是以单元格数组的形式存储数据labels
和数据units
,然后将实际数据存储在数字数组中。所以,问题在于:
让我们说我在CW中创建了名为myTestData
的对象实例。然后,我使用该实例以及函数setLabel
和setUnit
来生成两个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