Хранилище данных для сбора сигналов
Использовать signalDatastore объект для управления коллекцией данных в памяти или сигнальных файлов, где каждый отдельный файл умещается в памяти, но вся коллекция не обязательно умещается.
создает хранилище данных сигнала с входными сигналами в памяти, содержащимися в sds = signalDatastore(data)data.
создает хранилище данных сигнала на основе коллекции MAT-файлов в sds = signalDatastore(location)location.
задает дополнительные свойства, используя один или несколько аргументов пары имя-значение.sds = signalDatastore(___,Name,Value)
data - Входные данные в памятиВходные данные в памяти, определенные как векторы, матрицы, расписания или массивы ячеек. Каждый элемент data является членом, который выводится хранилищем данных при каждом вызове read.
Пример: {randn(100,1); randn(120,3); randn(135,2); randn(100,1)}
location - Файлы или папки для включения в хранилище данныхDsFileSet объектФайлы или папки, включенные в хранилище данных, указанные как путь или DsFileSet объект.
path - укажите путь в виде символьного вектора, массива ячеек символьных векторов, строкового скаляра или строкового массива, содержащего расположение локальных или удаленных файлов или папок.
Локальные файлы или папки - Указать location как локальный путь к файлам или папкам. Если файлы находятся не в текущей папке, то локальный путь должен указывать полный или относительный путь. Файлы в подпапках указанной папки не включаются автоматически в хранилище данных. При указании локального пути можно использовать подстановочный символ (*). Этот символ указывает, что хранилище данных включает все соответствующие файлы или все файлы в соответствующих папках.
Удаленные файлы или папки - Указать location как полный путь к файлам или папкам в виде унифицированного указателя ресурсов (URL) формы hdfs:///path_to_file. Дополнительные сведения см. в разделе Работа с удаленными данными.
DsFileSet object - можно также указать location в качестве DsFileSet объект. Дополнительные сведения см. в разделе matlab.io.datastore.DsFileSet.
Когда location представляет собой папку, хранилище данных включает только поддерживаемые форматы файлов и игнорирует любой другой формат. Чтобы указать пользовательский список расширений файлов для включения в хранилище данных, см. раздел FileExtensions собственность.
Пример: 'whale.mat'
Пример: '../dir/data/signal.mat'
Типы данных: char | string | cell
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
sds = signalDatastore('C:\dir\signaldata','FileExtensions','.csv')'IncludeSubfolders' - Флаг включения вложенной папкиfalse или 0 (по умолчанию) | true или 1Флаг включения подпапки, указанный как true или false. Определить true для включения всех файлов и подпапок в каждую папку или false для включения только файлов в каждую папку.
Пример: 'IncludeSubfolders',true
Типы данных: logical | double
'FileExtensions' - Расширения сигнальных файловРасширения сигнальных файлов, указанные как строковый скаляр, строковый массив, символьный вектор или массив ячеек символьных векторов.
Если функция считывания не указана, 'FileExtensions' может быть задано только значение .mat для чтения файлов MAT или .csv для чтения CSV-файлов. Если 'FileExtensions' опущен, по умолчанию имеет значение .mat если в указанном расположении имеются MAT-файлы, в противном случае 'FileExtensions' по умолчанию: .csv при наличии CSV-файлов в указанном расположении.
Если ни MAT-файлы, ни CSV-файлы отсутствуют, signalDatastore ошибки с использованием значения по умолчанию read функция. Укажите пользовательский read использование ReadFcn для чтения файлов любого другого типа.
Если расширение файла не указано, signalDatastore необходимо проанализировать файлы, чтобы определить расширение по умолчанию для чтения. Укажите расширение, чтобы избежать времени синтаксического анализа.
Пример: 'FileExtensions','.csv'
Типы данных: string | char | cell
В дополнение к этим аргументам «имя-значение» можно также указать любое из свойств на этой странице как пары «имя-значение», за исключением Files собственность.
Members - Имена участниковИмена элементов, указанные как массив ячеек. Длина имен элементов для входных данных должна быть равна длине data массив ячеек. Это свойство применяется только в том случае, если хранилище данных содержит данные в памяти.
MemberNames - Данные элемента сигнала["Member1"..."MemberN"] (по умолчанию) | строковый скаляр | строковый массивДанные элемента сигнала, заданные как строковый скаляр или строковый массив. Длина имен элементов для входных данных должна быть равна длине data массив ячеек. Это свойство применяется только в том случае, если хранилище данных содержит данные в памяти.
Files - Файлы, включенные в хранилище данныхФайлы, включенные в хранилище данных, указанные как массив ячеек строк или векторов символов. Каждый символьный вектор в массиве ячеек представляет полный путь к файлу. location аргумент в signalDatastore определяет Files при создании хранилища данных. Это свойство применяется только в том случае, если хранилище данных содержит данные файла.
Типы данных: string | char | cell
ReadFcn - Пользовательская функция чтенияread (по умолчанию) | дескриптор функцииФункция, считывающая данные, указанные как дескриптор функции. Функция должна принимать имя файла в качестве входных данных, а затем выводить соответствующие данные. Например, если customreader является указанной функцией для считывания данных, то она должна иметь один из следующих шаблонов:
function data = customreader(filename) ... end
function [data,info] = customreader(filename) ... end
data переменная. info переменная должна быть определяемой пользователем структурой, содержащей определяемую пользователем информацию из файла. Если вам нужны дополнительные аргументы, вы можете включить их после filename аргумент. signalDatastore добавляется к info структурировать поле, содержащее имя файла.
Пример: @customreader
Типы данных: function_handle
AlternateFileSystemRoots - Альтернативные корневые пути файловой системыАльтернативные корневые пути файловой системы, указанные как разделенная запятыми пара, состоящая из 'AlternateFileSystemRoots' и строковый вектор или массив ячеек. Использовать 'AlternateFileSystemRoots' при создании хранилища данных на локальном компьютере, но при необходимости доступа и обработки данных на другом компьютере (возможно, в другой операционной системе). Кроме того, при обработке данных с помощью Parallel Computing Toolbox™ и MATLAB ® Parallel Server™ данные хранятся на локальных компьютерах с копией данных, доступных на различных облачных платформах или кластерных машинах, необходимо использовать'AlternateFileSystemRoots' для связывания корневых путей.
Чтобы связать набор корневых путей, эквивалентных друг другу, укажите 'AlternateFileSystemRoots' в виде строкового вектора. Например,
["Z:\datasets","/mynetwork/datasets"]
Чтобы связать несколько наборов корневых путей, эквивалентных хранилищу данных, укажите 'AlternateFileSystemRoots' как массив ячеек, содержащий несколько строк, где каждая строка представляет набор эквивалентных корневых путей. Укажите каждую строку в массиве ячеек в качестве строкового вектора или массива ячеек в виде символьных векторов. Например:
Определить 'AlternateFileSystemRoots' в виде массива ячеек строковых векторов.
{["Z:\datasets", "/mynetwork/datasets"];...
["Y:\datasets", "/mynetwork2/datasets","S:\datasets"]}Либо укажите 'AlternateFileSystemRoots' как массив ячеек массива ячеек символьных векторов.
{{'Z:\datasets','/mynetwork/datasets'};...
{'Y:\datasets', '/mynetwork2/datasets','S:\datasets'}}
Значение 'AlternateFileSystemRoots' должны удовлетворять следующим условиям:
Содержит одну или несколько строк, где каждая строка указывает набор эквивалентных корневых путей.
Каждая строка указывает несколько корневых путей, и каждый корневой путь должен содержать не менее двух символов.
Корневые пути уникальны и не являются подпапками друг друга.
Содержит по крайней мере одну запись корневого пути, указывающую на расположение файлов.
Дополнительные сведения см. в разделе Настройка хранилища данных для обработки на различных машинах или кластерах.
Пример: ["Z:\datasets","/mynetwork/datasets"]
Типы данных: string | cell
SignalVariableNames - имена переменных в файлах сигналов;Имена переменных в файлах сигналов, заданные как строковый скаляр или вектор уникальных имен. Это свойство используется, когда файлы содержат более одной переменной и требуется указать имена переменных, содержащих данные сигнала, которые требуется прочитать.
Если значение свойства является строковым скаляром, signalDatastore возвращает данные, содержащиеся в указанной переменной.
Если значение свойства является строковым вектором, signalDatastore возвращает массив ячеек с данными, содержащимися в указанных переменных. В этом случае можно использовать ReadOutputOrientation для указания ориентации массива выходных ячеек в виде столбца или строки.
Если это свойство не указано, signalDatastore считывает первую переменную из списка переменных каждого файла.
Примечание
Чтобы определить имя первой переменной в файле, signalDatastore выполните следующие действия:
Для файлов MAT:
s = load(fileName);
varNames = fieldnames(s);
firstVar = s.(varNames{1});Для CSV-файлов:
opts = detectImportOptions(fileName,'PreserveVariableNames',true);
varNames = opts.VariableNames;
firstVar = string(varNames{1});
Это свойство применяется только в том случае, если хранилище данных содержит данные файла и используется функция чтения по умолчанию.
ReadOutputOrientation - Ориентация ячейки данных выходного сигнала'column' (по умолчанию) | 'row'Ориентация ячейки данных выходного сигнала, указанная как 'column' или 'row'. Это свойство определяет, как ориентировать массив ячеек данных выходного сигнала после вызова read функция при SignalVariableNames содержит более одного имени сигнала. ReadOutputOrientation не имеет эффекта, когда SignalVariableNames содержит только один элемент и не применяется, если SignalVariableNames не было указано.
Это свойство применяется только в том случае, если хранилище данных содержит данные файла и используется функция чтения по умолчанию.
В примере Чтение нескольких переменных из файлов в хранилище данных сигнала: data имеет ориентацию вывода по умолчанию и является массивом столбцов 2 на 1:
{1×4941 double}
{1×4941 double}
ReadOutputOrientation как 'row', то data является массивом строк 1 на 2: {1×4941 double} {1×4941 double}SampleRateVariableName - Наименование переменной частоты выборки храненияИмя переменной, содержащей частоту дискретизации, указанное как строковый скаляр. Это свойство применяется только в том случае, если хранилище данных содержит данные файла.
SampleTimeVariableName - Наименование переменной, содержащей значение времени выборкиИмя переменной, содержащей значение времени выборки, указанное как строковый скаляр. Это свойство применяется только в том случае, если хранилище данных содержит данные файла.
TimeValuesVariableName - Наименование вектора значений времени хранения переменнойИмя переменной, содержащей вектор значений времени, указанный как строковый скаляр. Это свойство применяется только в том случае, если хранилище данных содержит данные файла.
Примечание
'SampleRateVariableName', 'SampleTimeVariableName', и 'TimeValuesVariableName' являются взаимоисключающими. Эти свойства используются в тех случаях, когда файлы содержат переменную, содержащую данные о времени сигнала. Если не указано, signalDatastore предполагает, что данные сигнала не имеют временной информации. Эти свойства недопустимы, если пользователь read указана функция.
SampleRate - Значения частоты выборкиЗначения частоты выборки, заданные как положительный вещественный скаляр или вектор.
Установка значения SampleRate в скаляр, чтобы задать одинаковую частоту дискретизации для всех сигналов в signalDatastore.
Установка значения SampleRate к вектору для указания различной частоты дискретизации для каждого сигнала в signalDatastore.
Количество элементов в векторе должно равняться количеству элементов в signalDatastore.
SampleTime - Значения времени выборкиduration скаляр | duration векторЗначения времени выборки, указанные как положительный скаляр, вектор, duration скаляр или duration вектор.
Установка значения SampleTime в скаляр, чтобы задать одинаковое время выборки для всех сигналов в signalDatastore.
Установка значения SampleTime к вектору, чтобы указать различное время выборки для каждого сигнала в signalDatastore.
Количество элементов в векторе должно равняться количеству элементов в signalDatastore.
TimeValues - Значения времениduration вектор | матрица | массив ячеекЗначения времени, указанные как вектор, a duration вектор, матрица или клеточный массив.
Набор TimeValues к числовому или duration для указания одинаковых значений времени для всех сигналов в signalDatastore. Вектор должен иметь ту же длину, что и все сигналы в наборе.
Набор TimeValues к числовому или duration матрица или массив ячеек, чтобы указать, что каждый сигнал signalDatastore имеет сигналы с одинаковыми значениями времени, но значения времени отличаются от сигнала к сигналу.
Если TimeValues является матрицей, то количество столбцов равно количеству членов signalDatastore. Все сигналы в хранилище данных должны иметь длину, равную числу строк матрицы.
Если TimeValues является массивом ячеек, то количество векторов равно количеству членов signalDatastore. Все сигналы в элементе должны иметь длину, равную количеству элементов соответствующего вектора в массиве ячеек.
ReadSize - Максимальное количество файлов сигналов, возвращаемых read1 (по умолчанию) | положительный вещественный скалярМаксимальное количество файлов сигналов, возвращаемых read, указанный как положительный действительный скаляр. Если установить ReadSize для n, так что n > 1, каждый раз при вызове read функция, функция читает:
Первая переменная первых n файлов, если sds содержит данные файла.
Первые n членов, если sds содержит данные в памяти.
Выходные данные read является массивом ячеек сигнальных данных, когда ReadSize > 1.
read | Считывание следующего последовательного сигнала |
readall | Считывание всех сигналов из хранилища данных |
writeall | Запись хранилища данных в файлы |
preview | Считывание первого сигнала из хранилища данных для предварительного просмотра |
shuffle | Тасование сигналов в хранилище данных сигналов |
subset | Создание хранилища данных с подмножеством сигналов |
partition | Хранилище данных сигнала секционирования и возвращаемая секционированная часть |
numpartitions | Оценка возврата для разумного количества разделов для параллельной обработки |
reset | Сброс хранилища данных в исходное состояние |
progress | Определение объема считанных данных |
hasdata | Определение доступности данных для чтения |
transform | Преобразовать хранилище данных |
combine | Объединение данных из нескольких хранилищ данных |
isPartitionable | Определение возможности разделения хранилища данных |
isShuffleable | Определение возможности тасования хранилища данных |
Примечание
isPartitionable и isShuffleable вернуть true по умолчанию для signalDatastore. Вы можете проверить, если вывод combine и transform являются разделяемыми или изменяемыми с использованием этих двух функций.
Создайте хранилище данных сигнала для итерации через элементы массива ячеек в памяти данных сигнала. Данные состоят из синусоидально модулированного линейного чирпа, вогнутого квадратичного чирпа и генератора, управляемого напряжением. Сигналы дискретизируются при 3000 Гц.
fs = 3000;
t = 0:1/fs:3-1/fs;
data = {chirp(t,300,t(end),800).*exp(2j*pi*10*cos(2*pi*2*t)); ...
2*chirp(t,200,t(end),1000,'quadratic',[],'concave'); ...
vco(sin(2*pi*t),[0.1 0.4]*fs,fs)};
sds = signalDatastore(data,'SampleRate',fs);В то время как хранилище данных имеет данные, считывайте каждое наблюдение из хранилища данных сигнала и постройте график кратковременного преобразования Фурье.
plotID = 1; while hasdata(sds) [dataOut,info] = read(sds); subplot(3,1,plotID) stft(dataOut,info.SampleRate) plotID = plotID + 1; end

Укажите путь к сигналам выборки, включенным в Toolbox™ обработки сигналов.
folder = fullfile(matlabroot,'examples','signal','data');
Создание и отображение хранилища данных сигнала, указывающего на указанную папку.
sds = signalDatastore(folder)
sds =
signalDatastore with properties:
Files:{
' .../devel/bat/BR2021ad/build/matlab/examples/signal/data/EMGdata.mat';
' .../devel/bat/BR2021ad/build/matlab/examples/signal/data/EMGindex.mat';
' .../devel/bat/BR2021ad/build/matlab/examples/signal/data/HeartRates.mat'
... and 44 more
}
Folders: {'/mathworks/devel/bat/BR2021ad/build/matlab/examples/signal/data'}
AlternateFileSystemRoots: [0x0 string]
ReadSize: 1
Укажите путь к файлу для выборок сигналов, включенных в Toolbox™ обработки сигналов.
folder = fullfile(matlabroot,'examples','signal','data');
Создание хранилища данных сигнала, указывающего на .csv файлы в указанной папке.
sds = signalDatastore(folder,'FileExtensions','.csv')
sds =
signalDatastore with properties:
Files:{
' .../devel/bat/BR2021ad/build/matlab/examples/signal/data/tremor.csv'
}
Folders: {'/mathworks/devel/bat/BR2021ad/build/matlab/examples/signal/data'}
AlternateFileSystemRoots: [0x0 string]
ReadSize: 1
Укажите путь к четырем файлам-примерам, включенным в Toolbox™ обработки сигналов.
folder = fullfile(matlabroot,'examples','signal','data', ... ["INR.mat","relatedsig.mat","spots_num.mat","voice.mat"]);
Установите ReadSize свойство для 2 для одновременного чтения данных из двух файлов. Каждый read возвращает массив ячеек, в котором первая ячейка содержит первую переменную первого считанного файла, а вторая ячейка содержит первую переменную из второго файла. В то время как хранилище данных содержит данные, отображаются имена переменных, считанных в каждой read.
sds = signalDatastore(folder,'ReadSize',2); while hasdata(sds) [data,info] = read(sds); fprintf('Variable Name:\t%s\n',info.SignalVariableNames) end
Variable Name: Date Variable Name: s1 Variable Name: year Variable Name: fs
Укажите путь к трем сигналам, включенным в Toolbox™ обработки сигналов.
strong.mat файл содержит три переменные: him и fs.
slogan.mat файл содержит три переменные: hotword, phrase и fs.
Ring.mat файл содержит две переменные: y и Fs.
fld = ["strong.mat","slogan.mat","Ring.mat"]; folder = fullfile(matlabroot,'examples','signal','data',fld);
Создайте хранилище данных сигнала, указывающее на указанную папку. Каждый файл содержит несколько переменных с различными именами. Скаляр в каждом файле представляет частоту выборки. Определите пользовательскую функцию чтения, которая считывает все переменные в файле как структуру и возвращает переменную в dataOut и информацию о переменных в infoOut. SampleRate поле infoOut содержит скаляр, содержащийся в каждом файле, и dataOut содержит переменные, считываемые из каждого файла.
function [dataOut,infoOut] = MyCustomRead(filename) fText = importdata(filename); value = struct2cell(fText); dataOut = {}; for i = 1:length(value) if isscalar(value{i}) == 1 infoOut.SampleRate = value{i}; else dataOut{end+1} = value{i}; end end end
sds = signalDatastore(folder,'ReadFcn',@MyCustomRead);Пока хранилище данных имеет непрочитанные файлы, считывайте из хранилища данных и вычисляйте кратковременные преобразования Фурье сигналов.
while hasdata(sds) [data,infoOut] = read(sds); fs = infoOut.SampleRate; figure for i = 1:length(data) if length(data)>1 subplot(2,1,i) end stft(data{i},fs) end end



Укажите путь к файлам примеров, включенным в Toolbox™ обработки сигналов. Каждый файл содержит два сигнала и случайную частоту дискретизации fs в диапазоне от 3000 до 4000 Гц.
Первый сигнал, x1, - выпуклая квадратичная чирпа.
Второй сигнал, x2, представляет собой чирп с синусоидально изменяющимся частотным содержанием.
folder = fullfile(matlabroot,'examples','signal','data','dataset');
Создайте хранилище данных сигнала, которое указывает на указанную папку и задает имена переменных сигнала и частоту дискретизации. Пока хранилище данных имеет данные, считывайте каждое наблюдение и визуализируйте спектрограмму каждого сигнала.
sds = signalDatastore(folder,'SignalVariableNames',['x1';'x2'],'SampleRateVariableName','fs'); tiledlayout flow while hasdata(sds) [data,info] = read(sds); nexttile pspectrum(data{1},info.SampleRate,'spectrogram','TwoSided',true) nexttile pspectrum(data{2},info.SampleRate,'spectrogram','TwoSided',true) end

Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.