writeall

Запишите datastore в файлы

    Описание

    пример

    writeall(sds,outputLocation) пишут данные из входного datastore 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

    Figure contains 4 axes. Axes 1 with title Short-Time Fourier Transform contains an object of type image. Axes 2 with title Short-Time Fourier Transform contains an object of type image. Axes 3 with title Short-Time Fourier Transform contains an object of type image. Axes 4 with title Short-Time Fourier Transform contains an object of type image.

    Удалите 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

    Figure contains 4 axes. Axes 1 with title chirp contains an object of type patch. Axes 2 with title mtlb contains an object of type patch. Axes 3 with title splat contains an object of type patch. Axes 4 with title train contains an object of type patch.

    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

    Входные параметры

    свернуть все

    Datastore сигнала в виде signalDatastore объект. По умолчанию, когда sds содержит данные в оперативной памяти, writeall функционируйте пишут входные данные в MAT-файлы.

    Пример: signalDatastore({randn(100,1)},'SampleRate',100) задает datastore сигнала, содержащий один член, случайный сигнал, произведенный на уровне 100 Гц.

    Местоположение папки, чтобы записать данные в виде вектора символов или строкового скаляра. 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')

    Размещение файлов в выходной папке в виде любого 'duplicate' или 'flatten'.

    • 'duplicate' — Реплицируйте структуру папок данных, на которые указывает datastore сигнала. Задайте 'FolderLayout' как 'duplicate' обеспечить соответствие между наборами данных ввода и вывода.

    • 'flatten' — Запишите все файлы от входа до заданной выходной папки без любых подпапок.

    'FolderLayout' не применяется когда sds содержит данные в оперативной памяти.

    Типы данных: char | string

    Префикс к имени файла в виде вектора символов или строкового скаляра.

    writeall функция добавляет заданный префикс в имена выходного файла. Например, этот код добавляет сегодняшнюю дату в начало всех имен выходного файла от datastore.

    prefixText = string(datetime('today'))
    writeall(imds,'C:\myFolder','FilenamePrefix',prefixText);
    

    Типы данных: char | string

    Суффикс к имени файла в виде вектора символов или строкового скаляра.

    writeall функция добавляет заданный суффикс в имена выходного файла. Например, этот код добавляет описательный текст 'jpeg_70per' в конце всего выходного файла называет от datastore.

    writeall(imds,'C:\myFolder','FilenameSuffix','jpeg_70per');

    Типы данных: char | string

    Индикатор, чтобы записать параллельно в виде любого false или true.

    По умолчанию writeall записи в сериале. Если вы устанавливаете UseParallel к trueто writeall делит операции записи на отдельные группы и запускает группы параллельно если:

    • Parallel Computing Toolbox™ установлен.

    • Открытый параллельный пул существует, или автоматическое создание пула включено в Параллельных Настройках.

    В противном случае, writeall записи в сериале независимо от значения для UseParallel.

    Примечание

    Параллельная запись не поддерживается для CombinedDatastore объекты или хранилища данных, следующие transform примененный CombinedDatastore.

    Типы данных: логический

    Пользовательская функция записи в виде указателя на функцию. Заданная функция ответственна за создание выходных файлов. Можно использовать 'WriteFcn' аргумент значения имени, чтобы преобразовать данные или записать данные к формату файла, отличающемуся от значения по умолчанию, даже если writeall непосредственно не поддерживает выходной формат.

    Функциональная подпись

    Пользовательская функция записи должна принять по крайней мере три входных параметра, data, writeInfo, и suggestedOutputType.

    function myWriteFcn(data,writeInfo,suggestedOutputType)
    Функция может также принять дополнительные входные параметры, такие как аргументы значения имени, после первых трех необходимых входных параметров.

    • data содержит выход read метод, работающий с datastore.

    • writeInfo объект типа matlab.io.datastore.WriteInfo с перечисленными в таблице полями.

      Поле ОписаниеВвод
      ReadInfoВторой выход read метод signalDatastorestruct
      SuggestedOutputNameПолностью определенное, глобально уникальное имя файла, которое соответствует требования именования и местоположениеstring
      LocationЗаданный outputLocation переданный writeallstring
    • 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

    Смотрите также

    | |

    Введенный в R2021a