countEachLabel

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

Описание

пример

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

пример

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

Примеры

свернуть все

Укажите путь к файлу для выборок аудио, включенных в Audio Toolbox™.

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

Создайте audio 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 31 more
                              }
                     Folders: {
                              '/mathworks/devel/bat/BR2021ad/build/matlab/toolbox/audio/samples'
                              }
                      Labels: [samples; samples; samples ... and 31 more categorical]
    AlternateFileSystemRoots: {}
              OutputDataType: 'double'
      SupportedOutputFormats: ["wav"    "flac"    "ogg"    "mp4"    "m4a"]
         DefaultOutputFormat: "wav"

Функции countEachLabel для подсчета количества раз, когда возникает каждая уникальная метка.

tbl = countEachLabel(ads)
tbl=1×2 table
     Label     Count
    _______    _____

    samples     34  

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

Укажите путь к файлу для выборок аудио, включенных в Audio Toolbox™.

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

Создайте audio 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 31 more
                              }
                     Folders: {
                              '/mathworks/devel/bat/BR2021ad/build/matlab/toolbox/audio/samples'
                              }
    AlternateFileSystemRoots: {}
              OutputDataType: 'double'
                      Labels: {}
      SupportedOutputFormats: ["wav"    "flac"    "ogg"    "mp4"    "m4a"]
         DefaultOutputFormat: "wav"

Имена файлов содержат информацию о файлах. Проанализируйте имена файлов, чтобы собрать информацию о том, является ли файл моно или стерео, и является ли файл более тридцати секунд. Составьте таблицу, содержащую проанализированную информацию, а затем установите Labels свойство audio 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 на audio datastore и укажите TableVariable как NumberOfChannels. Функции countEachLabel и задайте TableVariable как IsLongerThan30Seconds.

countNumberOfChannelLabels = countEachLabel(ADS,'TableVariable','NumberOfChannels')
countNumberOfChannelLabels=3×2 table
    NumberOfChannels    Count
    ________________    _____

        mono             22  
        stereo           10  
        unknown           2  

countDurationLabels = countEachLabel(ADS,'TableVariable','IsLongerThan30Seconds')
countDurationLabels=3×2 table
    IsLongerThan30Seconds    Count
    _____________________    _____

           false              24  
           true                6  
           unknown             4  

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

свернуть все

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

Пометьте имя переменной таблицы в виде вектора символов или строки, которая соответствует табличной переменной Label свойство.

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

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

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

свернуть все

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

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

Введенный в R2018b