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
                              }
                      Labels: [samples; samples; samples ... and 26 more categorical]
    AlternateFileSystemRoots: {}
              OutputDataType: 'double'

Вызовите 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
                              }
    AlternateFileSystemRoots: {}
              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')
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