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');

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

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

tbl = countEachLabel(ads)
tbl=1×2 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
                              }
                     Folders: {
                              '/mathworks/devel/bat/BR2020ad/build/matlab/toolbox/audio/samples'
                              }
    AlternateFileSystemRoots: {}
              OutputDataType: 'double'
                      Labels: {}
      SupportedOutputFormats: ["wav"    "flac"    "ogg"    "mp4"    "m4a"]
         DefaultOutputFormat: "wav"

Имена файлов содержат информацию о файлах. Проанализируйте имена файлов, чтобы собрать информацию о том, моно ли файл или стерео и более длинен ли файл, чем тридцать секунд. Составьте таблицу, содержащую проанализированную информацию, и затем установите 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')
countNumberOfChannelLabels=3×2 table
    NumberOfChannels    Count
    ________________    _____

        mono             16  
        stereo           11  
        unknown           2  

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

           false              18  
           true                7  
           unknown             4  

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

свернуть все

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

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

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

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

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

свернуть все

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

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

Введенный в R2018b