exponenta event banner

countEachLabel

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

Описание

пример

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

пример

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

Примеры

свернуть все

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

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

Создайте хранилище аудиоданных, указывающее на указанную папку. Укажите 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 Toolbox™.

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

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

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 свойство хранилища аудиоданных для таблицы меток.

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 в хранилище аудиоданных и укажите 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