Запишите 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.