countEachLabel

Считайте количество уникальных меток

Синтаксис

tbl = countEachLabel(ADS)
tbl = countEachLabel(ADS,'TableVariable',VariableName)

Описание

пример

tbl = countEachLabel(ADS) считает число раз, каждая уникальная метка происходит в datastore. Другими словами, это считает количество файлов с каждой уникальной меткой. Вывод tbl является таблицей с именами переменных Label и Count.

пример

tbl = countEachLabel(ADS,'TableVariable',VariableName) считает число раз, каждая уникальная метка происходит в datastore. Когда свойство Labels datastore задано таблицей, необходимо задать VariableName. VariableName является табличной переменной (столбец) имя, которое вы хотите считать.

Примеры

свернуть все

Задайте путь к файлу к аудиосэмплам, включенным с Audio Toolbox™.

folder = fullfile(matlabroot,'toolbox','audio','samples');

Создайте аудио datastore, который указывает на заданную папку. Задайте свойство LabelSource как foldernames, так, чтобы метка, сопоставленная с каждым файлом, была установлена в имя папки, которое содержит файл.

ads = audioDatastore(folder,'Labelsource','foldernames')
ads = 

  audioDatastore with properties:

                       Files: {
                              ' .../build/matlab/toolbox/audio/samples/Ambiance-16-44p1-mono-12secs.wav';
                              ' .../matlab/toolbox/audio/samples/AudioArray-16-16-4channels-20secs.wav';
                              ' .../toolbox/audio/samples/ChurchImpulseResponse-16-44p1-mono-5secs.wav'
                               ... and 26 more
                              }
                      Labels: [samples; samples; samples ... and 26 more categorical]
    AlternateFileSystemRoots: {}
             ReadFailureRule: 'error'
                 MaxFailures: Inf
              OutputDataType: 'double'

Вызовите countEachLabel, чтобы считать число раз, каждая уникальная метка происходит.

tbl = countEachLabel(ads)
tbl =

  1x2 table

     Label     Count
    _______    _____

    samples     29  

Если свойство Labels аудио datastore задано как таблица, необходимо задать имя табличной переменной при подсчете меток.

Задайте путь к файлу к аудиосэмплам, включенным с Audio Toolbox™.

folder = fullfile(matlabroot,'toolbox','audio','samples');

Создайте аудио datastore, который указывает на заданную папку.

ADS = audioDatastore(folder)
ADS = 

  audioDatastore with properties:

                       Files: {
                              ' .../build/matlab/toolbox/audio/samples/Ambiance-16-44p1-mono-12secs.wav';
                              ' .../matlab/toolbox/audio/samples/AudioArray-16-16-4channels-20secs.wav';
                              ' .../toolbox/audio/samples/ChurchImpulseResponse-16-44p1-mono-5secs.wav'
                               ... and 26 more
                              }
    AlternateFileSystemRoots: {}
             ReadFailureRule: 'error'
                 MaxFailures: Inf
              OutputDataType: 'double'
                      Labels: {}

Имена файлов содержат информацию о файлах. Проанализируйте имена файлов, чтобы собрать информацию о том, моно ли файл или стерео и более длинен ли файл, чем тридцать секунд. Составьте таблицу, содержащую проанализированную информацию, и затем установите свойство Labels аудио datastore к таблице метки.

numFiles = numel(ADS.Files);

numChannels = cell(numFiles,1);
isLong = cell(numFiles,1);

for i = 1:numFiles
    if ~isempty(strfind(ADS.Files{i},'mono'))
        numChannels{i} = 'mono';
    elseif ~isempty(strfind(ADS.Files{i},'stereo'))
        numChannels{i} = 'stereo';
    else
        numChannels{i} = 'unknown';
    end

    secs = str2double(regexp(ADS.Files{i}, '-(\d+)secs', 'tokens', 'once'));
    if secs > 30
        isLong{i} = true;
    elseif secs <= 30
        isLong{i} = false;
    else
        isLong{i} = 'unknown';
    end
end
labelTable = table(numChannels,isLong, ...
    'VariableNames',{'NumberOfChannels','IsLongerThan30Seconds'});

ADS.Labels = labelTable;

Вызовите countEachLabel на аудио datastore и задайте TableVariable как NumberOfChannels. Вызовите countEachLabel и задайте TableVariable как IsLongerThan30Seconds.

countNumberOfChannelLabels = countEachLabel(ADS,'TableVariable','NumberOfChannels')

countDurationLabels = countEachLabel(ADS,'TableVariable','IsLongerThan30Seconds')
countNumberOfChannelLabels =

  3x2 table

    NumberOfChannels    Count
    ________________    _____

        mono             16  
        stereo           11  
        unknown           2  


countDurationLabels =

  3x2 table

    IsLongerThan30Seconds    Count
    _____________________    _____

           false              18  
           true                7  
           unknown             4  

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

свернуть все

Задайте ADS как объект audioDatastore.

Маркируйте имя табличной переменной, заданное как вектор символов или строка, которая соответствует табличной переменной свойства Label.

Этот синтаксис требуется, если свойство Label audioDatastore задано таблицей.

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

Выходные аргументы

свернуть все

Таблица количеств метки, возвращенных как таблица 2D столбца, содержащая имя каждой метки в ADS и количестве файлов, сопоставлена с каждой меткой.

Типы данных: table

Введенный в R2018b