Datastore для набора сигналов
Используйте signalDatastore
объект управлять набором данных в оперативной памяти или файлов сигнала, где каждый отдельный файл умещается в памяти, но целый набор не обязательно соответствует.
создает datastore сигнала с входными сигналами в оперативной памяти, содержавшимися в sds
= signalDatastore(data
)data
.
создает datastore сигнала на основе набора MAT-файлов в sds
= signalDatastore(location
)location
.
задает дополнительные свойства с помощью одного или нескольких аргументов пары "имя-значение".sds
= signalDatastore(___,Name,Value
)
data
— Входные данные в оперативной памятиВходные данные в оперативной памяти в виде векторов, матриц, расписаний или массивов ячеек. Каждый элемент data
член, который выводится datastore на каждом вызове read
.
Пример: {randn(100,1); randn(120,3); randn(135,2); randn(100,1)}
location
— Файлы или папки, чтобы включать в datastoreDsFileSet
объектФайлы или папки, включенные в datastore в виде пути или DsFileSet
объект.
path Задайте путь как вектор символов, массив ячеек из символьных векторов, строковый скаляр или массив строк, содержа местоположение файлов или папок, которые являются локальными или удаленными.
Локальные файлы или папки — Задают location
как локальный путь к файлам или папкам. Если файлы не находятся в текущей папке, то локальный путь должен задать полные или относительные пути. Файлы в подпапках заданной папки автоматически не включены в datastore. Можно использовать подстановочный символ (*) при определении локального пути. Этот символ указывает, что datastore включает все файлы соответствия или все файлы в соответствующих папках.
Удаленные файлы или папки — Задают location
быть полными путями файлов или папок как универсальный локатор ресурса (URL) формы hdfs:///path_to_file
. Для получения дополнительной информации смотрите работу с Удаленными данными.
DsFileSet
объект — также можно задать location
как DsFileSet
объект. Для получения дополнительной информации смотрите matlab.io.datastore.DsFileSet
.
Когда location
представляет папку, datastore включает только поддерживаемые форматы файлов и игнорирует любой другой формат. Чтобы задать пользовательский список расширений файла, чтобы включать в ваш datastore, смотрите 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
Типы данных: логический |
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
cellArray. Это свойство применяется только, когда datastore содержит данные в оперативной памяти.
MemberNames
— Предупредите о данных члена["Member1"..."MemberN"]
(значение по умолчанию) | строковый скаляр | массив строкПредупредите о данных члена в виде строкового скаляра или массива строк. Длина имен элемента для входных данных должна равняться длине data
cellArray. Это свойство применяется только, когда datastore содержит данные в оперативной памяти.
Files
— Файлы включены в datastoreФайлы, включенные в datastore в виде массива ячеек строк или векторов символов. Каждый вектор символов в массиве ячеек представляет полный путь файлу. location
аргумент в signalDatastore
задает Files
когда datastore создается. Это свойство применяется только, когда datastore содержит данные о файле.
Типы данных: 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'
когда вы создаете datastore на локальной машине, но должны получить доступ и обработать данные на другой машине (возможно различной операционной системы). Кроме того, когда обработка данных с помощью Parallel Computing Toolbox™ и MATLAB® Parallel Server™ и данных хранится на локальных машинах с копией доступных данных в облаке другой платформы или кластерных машинах, необходимо использовать 'AlternateFileSystemRoots'
сопоставлять корневые пути.
Чтобы сопоставить набор корневых путей, которые эквивалентны друг другу, задайте 'AlternateFileSystemRoots'
как вектор строки. Например,
["Z:\datasets","/mynetwork/datasets"]
Чтобы сопоставить несколько наборов корневых путей, которые эквивалентны для datastore, задайте 'AlternateFileSystemRoots'
как массив ячеек, содержащий несколько строк, где каждая строка представляет набор эквивалентных корневых путей. Задайте каждую строку в массиве ячеек или как вектор строки или как массив ячеек из символьных векторов. Например:
Задайте 'AlternateFileSystemRoots'
как массив ячеек векторов строки.
{["Z:\datasets", "/mynetwork/datasets"];... ["Y:\datasets", "/mynetwork2/datasets","S:\datasets"]}
В качестве альтернативы задайте 'AlternateFileSystemRoots'
как массив ячеек массива ячеек из символьных векторов.
{{'Z:\datasets','/mynetwork/datasets'};... {'Y:\datasets', '/mynetwork2/datasets','S:\datasets'}}
Значение 'AlternateFileSystemRoots'
должен удовлетворить этим условиям:
Содержит одну или несколько строк, где каждая строка задает набор эквивалентных корневых путей.
Каждая строка задает несколько корневых путей, и каждый корневой путь должен содержать по крайней мере два символа.
Корневые пути уникальны и не являются подпапками друг друга.
Содержит по крайней мере одну корневую запись пути, которая указывает на местоположение файлов.
Для получения дополнительной информации смотрите Настроенный Datastore для Обработки на Различных Машинах или Кластерах.
Пример: ["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});
Это свойство применяется только, когда datastore содержит данные о файле, и функция чтения по умолчанию используется.
ReadOutputOrientation
— Ориентация ячейки данных выходного сигнала массивов'column'
(значение по умолчанию) | 'row'
Ориентация ячейки данных выходного сигнала массивов в виде 'column'
или 'row'
. Это свойство задает, как ориентировать массив ячейки данных выходного сигнала после вызова read
функционируйте когда SignalVariableNames
содержит больше чем одно имя сигнала. ReadOutputOrientation
не оказывает влияния когда SignalVariableNames
содержит только один элемент и не применяется если SignalVariableNames
не был задан.
Это свойство применяется только, когда datastore содержит данные о файле, и функция чтения по умолчанию используется.
В Чтении Несколько Переменных из Файлов в примере Datastore Сигнала, data
имеет выходную ориентацию по умолчанию и 2 1 массив столбца:
{1×4941 double} {1×4941 double}
ReadOutputOrientation
как 'row'
, затем data
1 2 массив строк:{1×4941 double} {1×4941 double}
SampleRateVariableName
— Имя переменной частоты дискретизации содержанияИмя переменной, содержащей частоту дискретизации в виде строкового скаляра. Это свойство применяется только, когда datastore содержит данные о файле.
SampleTimeVariableName
— Имя переменного значения шага расчета содержанияИмя переменной, содержащей значение шага расчета в виде строкового скаляра. Это свойство применяется только, когда datastore содержит данные о файле.
TimeValuesVariableName
— Имя переменного вектора значений времени занятостиИмя переменной, содержащей вектор временных стоимостей в виде строкового скаляра. Это свойство применяется только, когда datastore содержит данные о файле.
Примечание
'SampleRateVariableName'
, 'SampleTimeVariableName'
, и 'TimeValuesVariableName'
являются взаимоисключающими. Используйте эти свойства, когда ваши файлы содержат переменную, которая содержит информацию времени данных сигнала. Если не заданный, signalDatastore
принимает, что у данных сигнала нет времени информация. Эти свойства не допустимы если пользовательский read
функция задана.
SampleRate
— Значения частоты дискретизацииЗначения частоты дискретизации в виде положительного действительного скаляра или вектора.
Установите значение SampleRate
к скаляру, чтобы задать ту же частоту дискретизации для всех сигналов в signalDatastore
.
Установите значение SampleRate
к вектору, чтобы задать различную частоту дискретизации для каждого сигнала в signalDatastore
.
Число элементов в векторе должно равняться числу элементов в signalDatastore
.
SampleTime
— Значения шага расчетаduration
скаляр | duration
векторЗначения шага расчета в виде положительной скалярной величины, вектора, a duration
скаляр или a duration
вектор.
Установите значение SampleTime
к скаляру, чтобы задать тот же шаг расчета для всех сигналов в signalDatastore
.
Установите значение SampleTime
к вектору, чтобы задать различный шаг расчета для каждого сигнала в signalDatastore
.
Число элементов в векторе должно равняться числу элементов в signalDatastore
.
TimeValues
— Временные стоимостиduration
вектор | матрица | массив ячеекВременные стоимости в виде вектора, a duration
вектор, матрица или массив ячеек.
Установите TimeValues
к числовому или duration
вектор, чтобы задать те же временные стоимости для всех сигналов в signalDatastore
. Вектор должен иметь ту же длину как все сигналы в наборе.
Установите TimeValues
к числовому или duration
матричный или массив ячеек, чтобы указать, что каждый сигнал signalDatastore
имеет сигналы с теми же временными стоимостями, но временные стоимости отличаются от сигнала до сигнала.
Если TimeValues
матрица, затем количество столбцов равняется числу членов signalDatastore
. Все сигналы в datastore должны иметь длину, равную количеству строк матрицы.
Если TimeValues
массив ячеек, затем количество векторов равняется числу членов signalDatastore
. Все сигналы в члене должны иметь длину, равную числу элементов соответствующего вектора в массиве ячеек.
ReadSize
— Максимальное количество файлов сигнала возвращено read
(значение по умолчанию) | положительный действительный скалярМаксимальное количество файлов сигнала, возвращенных read
В виде положительного действительного скаляра. Если вы устанавливаете ReadSize
свойство к n, такому, что n> 1, каждый раз вы вызываете read
функция, функциональные чтения:
Первая переменная первых файлов n, если sds
содержит данные о файле.
Первые члены n, если sds
содержит данные в оперативной памяти.
Выход read
массив ячеек данных сигнала когда ReadSize
> 1.
read | Считайте затем последовательное наблюдение сигнала |
readall | Считайте все сигналы из datastore |
writeall | Запишите datastore в файлы |
preview | Считайте первое наблюдение сигнала из datastore для предварительного просмотра |
shuffle | Переставьте сигналы в datastore сигнала |
subset | Создайте datastore с подмножеством сигналов |
partition | Datastore сигнала раздела и возвращает разделенный фрагмент |
numpartitions | Возвратите оценку для разумного количества разделов для параллельной обработки |
reset | Сброс Datastore к начальному состоянию |
progress | Определите, сколько данных было считано |
hasdata | Определите, доступны ли данные для чтения |
transform | Преобразуйте datastore |
combine | Объедините данные от нескольких datastores |
isPartitionable | Определите, partitionable ли datastore |
isShuffleable | Определите, shuffleable ли datastore |
Примечание
isPartitionable
и isShuffleable
возвратите true
по умолчанию для signalDatastore
. Можно протестировать если выход combine
и transform
partitionable или shuffleable использование двух функций.
Создайте datastore сигнала, чтобы выполнить итерации через элементы массива ячеек в оперативной памяти данных сигнала. Данные состоят из синусоидально модулируемого линейного щебета, вогнутого квадратичного щебета и управляемого напряжением генератора. Сигналы производятся на уровне 3 000 Гц.
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);
В то время как datastore имеет данные, считайте каждое наблюдение из datastore сигнала и постройте кратковременное преобразование Фурье.
plotID = 1; while hasdata(sds) [dataOut,info] = read(sds); subplot(3,1,plotID) stft(dataOut,info.SampleRate) plotID = plotID + 1; end
Задайте путь к демонстрационным сигналам, включенным с Signal Processing Toolbox™.
folder = fullfile(matlabroot,'examples','signal','data');
Создайте и отобразите datastore сигнала, который указывает на заданную папку.
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
Задайте путь к файлу к выборкам сигнала, включенным с Signal Processing Toolbox™.
folder = fullfile(matlabroot,'examples','signal','data');
Создайте datastore сигнала, который указывает на .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
Задайте путь к четырем файлам в качестве примера, включенным с Signal Processing Toolbox™.
folder = fullfile(matlabroot,'examples','signal','data', ... ["INR.mat","relatedsig.mat","spots_num.mat","voice.mat"]);
Установите ReadSize
свойство к 2
считывать данные из двух файлов за один раз. Каждый read
возвращает массив ячеек, где первая ячейка содержит первую переменную первого чтения файла, и вторая ячейка содержит первую переменную из второго файла. В то время как datastore имеет данные, отобразите имена чтения переменных в каждом 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
Задайте путь к трем сигналам, включенным с Signal Processing 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);
Создайте datastore сигнала, который указывает на заданную папку. Каждый файл содержит несколько переменных различных имен. Скаляр в каждом файле представляет частоту дискретизации. Задайте пользовательскую функцию чтения, которая читает все переменные в файле как структура и возвращает переменную в 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);
В то время как datastore имеет непрочитанные файлы, читайте из datastore и вычислите кратковременные преобразования Фурье сигналов.
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
Задайте путь к файлам в качестве примера, включенным с Signal Processing Toolbox™. Каждый файл содержит два сигнала и уровень случайной выборки fs
в пределах от 3 000 - 4 000 Гц.
Первый сигнал, x1
, выпуклый квадратичный щебет.
Второй сигнал, x2
, щебет с синусоидально различным содержимым частоты.
folder = fullfile(matlabroot,'examples','signal','data','dataset');
Создайте datastore сигнала, который указывает на заданную папку и определяет имена переменных сигнала и частоты дискретизации. В то время как datastore имеет данные, считайте каждое наблюдение и визуализируйте спектрограмму каждого сигнала.
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.