Запишите datastore в файлы
writeall(
пишут данные из входного datastore sds
,outputLocation
)sds
к выходным файлам в местоположении, заданном в outputLocation
. Количество выходных файлов совпадает с количеством файлов, на которые ссылается datastore.
writeall(
записывает данные с дополнительными опциями, заданными одним или несколькими аргументами значения имени. Например, sds
,outputLocation
,Name,Value
)'FilenameSuffix','norm'
добавляет описательный текст 'norm'
в конце всех выходных файлов.
Создайте 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); besselj(0,600*(sin(2*pi*(t+1).^3/30).^5));}; sds = signalDatastore(data,'SampleRate',fs);
Создайте папку под названием Files
в текущей папке. Запишите содержимое datastore к файлам. Перечислите содержимое папки. writeall
функционируйте использует MemberNames
свойство signalDatastore
назвать файлы и сигналы в файлах.
fname = 'Files';
mkdir(fname)
writeall(sds,fname)
dir(fname)
. Member1.mat Member3.mat .. Member2.mat Member4.mat
Создайте datastore, который указывает на файлы в Files
. Считайте данные один файл за один раз. Вычислите и отобразите кратковременное преобразование Фурье каждого сигнала.
sdfs = signalDatastore(fname,'SampleRate',fs); tiledlayout flow while hasdata(sdfs) nexttile [sg,nf] = read(sdfs); stft(sg,nf.SampleRate) end
Удалите Files
директория вы создали ранее в примере.
rmdir(fname,'s')
Задайте путь к четырем сигналам, включенным с MATLAB®. Сигналы являются записями щебетания птицы, обучения, нащельной рейки и женского голоса, говоря слово "MATLAB". Первые три сигнала производятся на уровне 8 192 Гц и четвертое на уровне 7 418 Гц. Создайте datastore сигнала, который указывает на заданные файлы.
fls = ["chirp" "train" "splat" "mtlb"]; folder = fullfile(matlabroot,"toolbox","matlab","audiovideo",append(fls,".mat")); sds = signalDatastore(folder,'SampleRateVariableName','Fs');
Запишите спектрограммы сигналов к текстовым файлам в текущей папке с помощью writeall
и writeSpectrogram
функции. writeall
использует MemberNames
свойство signalDatastore
назвать файлы и сигналы в файлах. Создайте datastore, который указывает на файлы в текущей папке.
writeall(sds,'.','WriteFcn',@writeSpectrogram) sdfs = signalDatastore('.');
Считайте данные один файл за один раз. Отобразите спектрограмму каждого сигнала.
tiledlayout flow while hasdata(sdfs) nexttile [d,info] = read(sdfs); waterfall(d(2:end,1),d(1,2:end),d(2:end,2:end)') wtf = gca; wtf.XDir = 'reverse'; view(30,45) xlabel("{\it f} (Hz)") ylabel("{\it t} (s)") [~,k] = fileparts(info.FileName); title(k) end
writeSpectrogram
функция вычисляет спектрограмму входного сигнала с помощью pspectrum
и записи это к MAT-файлу в текущей папке. Функция задает 80% перекрытия между смежными сегментами, разрешением времени 0,15 секунд, и спектральной утечкой 0,8.
function writeSpectrogram(data,info,~) [s,f,t] = pspectrum(data,info.ReadInfo.SampleRate,'spectrogram', ... 'TimeResolution',0.15,'OverlapPercent',80,'Leakage',0.8); d = [NaN t'; f s]; [~,q] = fileparts(info.SuggestedOutputName); save(q,"d") end
sds
— Datastore сигналаsignalDatastore
объектDatastore сигнала в виде signalDatastore
объект. По умолчанию, когда sds
содержит данные в оперативной памяти, writeall
функционируйте пишут входные данные в MAT-файлы.
Пример: signalDatastore({randn(100,1)},'SampleRate',100)
задает datastore сигнала, содержащий один член, случайный сигнал, произведенный на уровне 100 Гц.
outputLocation
— Местоположение папки, чтобы записать данныеМестоположение папки, чтобы записать данные в виде вектора символов или строкового скаляра. outputLocation
может задать полный или относительный путь.
Пример: outputLocation = '../../dir/data'
Пример: outputLocation = "C:\Users\MyName\Desktop"
Типы данных: char |
string
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
writeall(sds,outputLocation,'FolderLayout','flatten')
'FolderLayout'
— Размещение файлов в выходной папке'duplicate'
(значение по умолчанию) | 'flatten'
Размещение файлов в выходной папке в виде любого 'duplicate'
или 'flatten'
.
'duplicate'
— Реплицируйте структуру папок данных, на которые указывает datastore сигнала. Задайте 'FolderLayout'
как 'duplicate'
обеспечить соответствие между наборами данных ввода и вывода.
'flatten'
— Запишите все файлы от входа до заданной выходной папки без любых подпапок.
'FolderLayout'
не применяется когда sds
содержит данные в оперативной памяти.
Типы данных: char |
string
'FilenamePrefix'
— Префикс к имени файлаПрефикс к имени файла в виде вектора символов или строкового скаляра.
writeall
функция добавляет заданный префикс в имена выходного файла. Например, этот код добавляет сегодняшнюю дату в начало всех имен выходного файла от datastore.
prefixText = string(datetime('today')) writeall(imds,'C:\myFolder','FilenamePrefix',prefixText);
Типы данных: char |
string
'FilenameSuffix'
— Суффикс к имени файлаСуффикс к имени файла в виде вектора символов или строкового скаляра.
writeall
функция добавляет заданный суффикс в имена выходного файла. Например, этот код добавляет описательный текст 'jpeg_70per'
в конце всего выходного файла называет от datastore.
writeall(imds,'C:\myFolder','FilenameSuffix','jpeg_70per');
Типы данных: char |
string
'UseParallel'
— Индикатор, чтобы записать параллельноfalse
или 0
(значение по умолчанию) | true
или 1
Индикатор, чтобы записать параллельно в виде любого false
или true
.
По умолчанию writeall
записи в сериале. Если вы устанавливаете UseParallel
к true
то writeall
делит операции записи на отдельные группы и запускает группы параллельно если:
Parallel Computing Toolbox™ установлен.
Открытый параллельный пул существует, или автоматическое создание пула включено в Параллельных Настройках.
В противном случае, writeall
записи в сериале независимо от значения для UseParallel
.
Примечание
Параллельная запись не поддерживается для CombinedDatastore
объекты или хранилища данных, следующие transform
примененный CombinedDatastore
.
Типы данных: логический
'WriteFcn'
— Пользовательская функция записиПользовательская функция записи в виде указателя на функцию. Заданная функция ответственна за создание выходных файлов. Можно использовать 'WriteFcn'
аргумент значения имени, чтобы преобразовать данные или записать данные к формату файла, отличающемуся от значения по умолчанию, даже если writeall
непосредственно не поддерживает выходной формат.
Пользовательская функция записи должна принять по крайней мере три входных параметра, data
, writeInfo
, и suggestedOutputType
.
function myWriteFcn(data,writeInfo,suggestedOutputType)
data
содержит выход read
метод, работающий с datastore.
writeInfo
объект типа matlab.io.datastore.WriteInfo
с перечисленными в таблице полями.
Поле | Описание | Ввод |
---|---|---|
ReadInfo | Второй выход read метод signalDatastore | struct |
SuggestedOutputName | Полностью определенное, глобально уникальное имя файла, которое соответствует требования именования и местоположение | string |
Location | Заданный outputLocation переданный writeall | string |
suggestedOutputType
предложенный тип выходного файла.
Простая функция записи, которая вычисляет спектрограмму использования входного сигнала pspectrum
и записи это к текстовому файлу в текущей папке с помощью функции MATLAB® writematrix
. Функция задает 80% перекрытия между смежными сегментами, разрешением времени 0,15 секунд, и спектральной утечкой 0,8.
function writeSpectrogram(data,info,~) [s,f,t] = pspectrum(data,info.ReadInfo.SampleRate,'spectrogram', ... 'TimeResolution',0.15,'OverlapPercent',80,'Leakage',0.8); d = [NaN t'; f s]; [~,q] = fileparts(info.SuggestedOutputName); writematrix(d,append(q,".txt")) end
writeSpectrogram
как запись функционируют для signalDatastore
объект sds
, используйте эту команду.writeall(sds,'.','WriteFcn',@writeSpectrogram)
Типы данных: function_handle
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.