Я довольно новичок и неопытен в 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