splitEachLabel

Datastore разделений согласно заданным пропорциям метки

Синтаксис

[ADS1,ADS2] = splitEachLabel(ADS,p)
[ADS1,...,ADSM] = splitEachLabel(ADS,p1,...,pN)
___ = splitEachLabel(___,'randomized')
___ = splitEachLabel(___,Name,Value)

Описание

пример

[ADS1,ADS2] = splitEachLabel(ADS,p) разделяет звуковые файлы в ADS в два новых хранилища данных, ADS1 и ADS2. Новый datastore ADS1 содержит первые файлы p от каждой метки и ADS2, содержит остающиеся файлы от каждой метки. p может быть или номером между 0 и 1, исключительный, указав на процент файлов от каждой метки, чтобы присвоить ADS1 или целому числу, указывающему на абсолютное количество файлов от каждой метки, чтобы присвоить ADS1.

пример

[ADS1,...,ADSM] = splitEachLabel(ADS,p1,...,pN) разделяет datastore в N+1 новые хранилища данных. Новый datastore ADS1 содержит первые файлы p1 от каждой метки, следующий новый datastore ADS2, содержит следующие файлы p2 и так далее. Если p1,…,pN представляет количества файлов, то их сумма должна быть не больше, чем количеством файлов в самой маленькой метке в исходном datastore, ADS.

пример

___ = splitEachLabel(___,'randomized') случайным образом присваивает заданную пропорцию файлов от каждой метки до новых хранилищ данных.

пример

___ = splitEachLabel(___,Name,Value) задает свойства новых хранилищ данных с помощью одного или нескольких аргументов пары "имя-значение". Например, можно задать который метки разделить с 'Include','labelname'.

Примеры

свернуть все

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

folder = fullfile(matlabroot,'toolbox','audio','samples');
ADS = audioDatastore(folder,'FileExtensions','.wav');

Добавьте метку A в первую половину файлов и метку B к второй половине. Если существует нечетное число файлов, присваивает дополнительный файл метка B. Вызовите countEachLabel, чтобы подтвердить, что половина файлов маркирована A, и половина файлов маркированы B.

labels = [repmat({'A'},1,floor(numel(ADS.Files)/2)), ...
          repmat({'B'},1,ceil(numel(ADS.Files)/2))];
ADS.Labels = labels;

countEachLabel(ADS)
ans =

  2x2 table

    Label    Count
    _____    _____

      A       10  
      B       11  

Разделите ADS в два хранилища данных, ADS1 и ADS2, указав, что каждый новый datastore содержит пятьдесят процентов каждой метки и соответствующих файлов. Вызовите countEachLabel, чтобы подтвердить, что половина файлов маркирована A, и половина файлов маркирована B для каждого из новых хранилищ данных.

[ADS1,ADS2] = splitEachLabel(ADS,0.5)

ADS1count = countEachLabel(ADS1)
ADS2count = countEachLabel(ADS2)
ADS1 = 

  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 8 more
                              }
                      Labels: {'A'; 'A'; 'A' ... and 8 more}
    AlternateFileSystemRoots: {}
             ReadFailureRule: 'error'
                 MaxFailures: Inf
              OutputDataType: 'double'


ADS2 = 

  audioDatastore with properties:

                       Files: {
                              ' .../build/matlab/toolbox/audio/samples/Engine-16-44p1-stereo-20sec.wav';
                              ' .../build/matlab/toolbox/audio/samples/FemaleSpeech-16-8-mono-3secs.wav';
                              ' .../BR2019ad/build/matlab/toolbox/audio/samples/Heli_16ch_ACN_SN3D.wav'
                               ... and 7 more
                              }
                      Labels: {'A'; 'A'; 'A' ... and 7 more}
    AlternateFileSystemRoots: {}
             ReadFailureRule: 'error'
                 MaxFailures: Inf
              OutputDataType: 'double'


ADS1count =

  2x2 table

    Label    Count
    _____    _____

      A        5  
      B        6  


ADS2count =

  2x2 table

    Label    Count
    _____    _____

      A        5  
      B        5  

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

folder = fullfile(matlabroot,'toolbox','audio','samples');
ADS = audioDatastore(folder,'FileExtensions','.wav');

Добавьте метку A в первую половину файлов и метку B к второй половине. Если существует нечетное число файлов, присваивает дополнительный файл метка B. Вызовите countEachLabel, чтобы подтвердить, что половина файлов маркирована A, и половина файлов маркированы B.

labels = [repmat({'A'},1,floor(numel(ADS.Files)/2)), ...
          repmat({'B'},1,ceil(numel(ADS.Files)/2))];
ADS.Labels = labels;

countEachLabel(ADS)
ans =

  2x2 table

    Label    Count
    _____    _____

      A       10  
      B       11  

Разделите ADS в два хранилища данных, ADS1 и ADS2. Укажите, что ADS1 содержит четыре из каждой метки и ее соответствующего файла. ADS2 содержит остающиеся метки и соответствующие файлы. Вызовите countEachLabel, чтобы подтвердить, что ADS1 содержит четыре файла, маркировал A, и четыре файла маркировали B, и что ADS2 содержит остающиеся метки.

[ADS1,ADS2] = splitEachLabel(ADS,4)

ADS1count = countEachLabel(ADS1)
ADS2count = countEachLabel(ADS2)
ADS1 = 

  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 5 more
                              }
                      Labels: {'A'; 'A'; 'A' ... and 5 more}
    AlternateFileSystemRoots: {}
             ReadFailureRule: 'error'
                 MaxFailures: Inf
              OutputDataType: 'double'


ADS2 = 

  audioDatastore with properties:

                       Files: {
                              ' .../build/matlab/toolbox/audio/samples/Counting-16-44p1-mono-15secs.wav';
                              ' .../build/matlab/toolbox/audio/samples/Engine-16-44p1-stereo-20sec.wav';
                              ' .../build/matlab/toolbox/audio/samples/FemaleSpeech-16-8-mono-3secs.wav'
                               ... and 10 more
                              }
                      Labels: {'A'; 'A'; 'A' ... and 10 more}
    AlternateFileSystemRoots: {}
             ReadFailureRule: 'error'
                 MaxFailures: Inf
              OutputDataType: 'double'


ADS1count =

  2x2 table

    Label    Count
    _____    _____

      A        4  
      B        4  


ADS2count =

  2x2 table

    Label    Count
    _____    _____

      A        6  
      B        7  

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

folder = fullfile(matlabroot,'toolbox','audio','samples');
ADS = audioDatastore(folder,'FileExtensions','.wav');

Добавьте метку A в первую половину файлов и метку B к второй половине. Если существует нечетное число файлов, присвойте дополнительный файл метка B. Вызовите countEachLabel, чтобы подтвердить, что половина файлов маркирована A, и половина файлов маркированы B.

labels = [repmat({'A'},1,floor(numel(ADS.Files)/2)), ...
          repmat({'B'},1,ceil(numel(ADS.Files)/2))];
ADS.Labels = labels;

countEachLabel(ADS)
ans =

  2x2 table

    Label    Count
    _____    _____

      A       10  
      B       11  

Разделите ADS в три новых хранилища данных, ADS60, ADS10 и ADS30. Первый datastore, ADS60, содержит первые 60% файлов с меткой A и первые 60% файлов с меткой B. ADS10 содержит следующие 10% файлов от каждой метки. ADS30 содержит остающиеся 30% файлов от каждой метки. Если процент применился к метке, не приводит к целому числу файлов, splitEachLabel округляет в меньшую сторону до самого близкого целого числа.

[ADS60,ADS10,ADS30] = splitEachLabel(ADS,0.6,0.1)
ADS60 = 

  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 10 more
                              }
                      Labels: {'A'; 'A'; 'A' ... and 10 more}
    AlternateFileSystemRoots: {}
             ReadFailureRule: 'error'
                 MaxFailures: Inf
              OutputDataType: 'double'


ADS10 = 

  audioDatastore with properties:

                       Files: {
                              ' .../build/matlab/toolbox/audio/samples/FemaleSpeech-16-8-mono-3secs.wav';
                              ' .../build/matlab/toolbox/audio/samples/Turbine-16-44p1-mono-22secs.wav'
                              }
                      Labels: {'A'; 'B'}
    AlternateFileSystemRoots: {}
             ReadFailureRule: 'error'
                 MaxFailures: Inf
              OutputDataType: 'double'


ADS30 = 

  audioDatastore with properties:

                       Files: {
                              ' .../BR2019ad/build/matlab/toolbox/audio/samples/Heli_16ch_ACN_SN3D.wav';
                              ' .../matlab/toolbox/audio/samples/JetAirplane-16-11p025-mono-16secs.wav';
                              ' .../build/matlab/toolbox/audio/samples/Laughter-16-8-mono-4secs.wav'
                               ... and 3 more
                              }
                      Labels: {'A'; 'A'; 'A' ... and 3 more}
    AlternateFileSystemRoots: {}
             ReadFailureRule: 'error'
                 MaxFailures: Inf
              OutputDataType: 'double'

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

countEachLabel(ADS60)
countEachLabel(ADS10)
countEachLabel(ADS30)
ans =

  2x2 table

    Label    Count
    _____    _____

      A        6  
      B        7  


ans =

  2x2 table

    Label    Count
    _____    _____

      A        1  
      B        1  


ans =

  2x2 table

    Label    Count
    _____    _____

      A        3  
      B        3  

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

folder = fullfile(matlabroot,'toolbox','audio','samples');
ADS = audioDatastore(folder,'FileExtensions','.wav');

Добавьте метку A в первую половину файлов и метку B к второй половине. Если существует нечетное число файлов, присвойте дополнительный файл метка B. Вызовите countEachLabel, чтобы подтвердить, что половина файлов маркирована A, и половина файлов маркированы B.

labels = [repmat({'A'},1,floor(numel(ADS.Files)/2)), ...
          repmat({'B'},1,ceil(numel(ADS.Files)/2))];
ADS.Labels = labels;

countEachLabel(ADS)
ans =

  2x2 table

    Label    Count
    _____    _____

      A       10  
      B       11  

Разделите ADS в три новых хранилища данных, ADS1, ADS2 и ADS3. Первый datastore, ADS1, содержит первый файл с меткой A и первый файл с меткой B. ADS2 содержит следующий файл от каждой метки. ADS3 содержит остающиеся файлы от каждой метки. Если процент применился к метке, не приводит к целому числу файлов, splitEachLabel округляет в меньшую сторону до самого близкого целого числа.

[ADS1,ADS2,ADS3] = splitEachLabel(ADS,1,1)
ADS1 = 

  audioDatastore with properties:

                       Files: {
                              ' .../build/matlab/toolbox/audio/samples/Ambiance-16-44p1-mono-12secs.wav';
                              ' .../matlab/toolbox/audio/samples/MainStreetOne-24-96-stereo-63secs.wav'
                              }
                      Labels: {'A'; 'B'}
    AlternateFileSystemRoots: {}
             ReadFailureRule: 'error'
                 MaxFailures: Inf
              OutputDataType: 'double'


ADS2 = 

  audioDatastore with properties:

                       Files: {
                              ' .../matlab/toolbox/audio/samples/AudioArray-16-16-4channels-20secs.wav';
                              ' .../build/matlab/toolbox/audio/samples/NoisySpeech-16-22p5-mono-5secs.wav'
                              }
                      Labels: {'A'; 'B'}
    AlternateFileSystemRoots: {}
             ReadFailureRule: 'error'
                 MaxFailures: Inf
              OutputDataType: 'double'


ADS3 = 

  audioDatastore with properties:

                       Files: {
                              ' .../toolbox/audio/samples/ChurchImpulseResponse-16-44p1-mono-5secs.wav';
                              ' .../build/matlab/toolbox/audio/samples/Click-16-44p1-mono-0.2secs.wav';
                              ' .../build/matlab/toolbox/audio/samples/Counting-16-44p1-mono-15secs.wav'
                               ... and 14 more
                              }
                      Labels: {'A'; 'A'; 'A' ... and 14 more}
    AlternateFileSystemRoots: {}
             ReadFailureRule: 'error'
                 MaxFailures: Inf
              OutputDataType: 'double'

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

countEachLabel(ADS1)
countEachLabel(ADS2)
countEachLabel(ADS3)
ans =

  2x2 table

    Label    Count
    _____    _____

      A        1  
      B        1  


ans =

  2x2 table

    Label    Count
    _____    _____

      A        1  
      B        1  


ans =

  2x2 table

    Label    Count
    _____    _____

      A        8  
      B        9  

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

folder = fullfile(matlabroot,'toolbox','audio','samples');
ADS = audioDatastore(folder,'FileExtensions','.wav')
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 18 more
                              }
    AlternateFileSystemRoots: {}
             ReadFailureRule: 'error'
                 MaxFailures: Inf
              OutputDataType: 'double'
                      Labels: {}

Добавьте метку A в первую половину файлов и метку B к второй половине. Если существует нечетное число файлов, присвойте дополнительный файл метка B. Вызовите countEachLabel, чтобы подтвердить, что половина файлов маркирована A, и половина файлов маркированы B.

labels = [repmat({'A'},1,floor(numel(ADS.Files)/2)), ...
          repmat({'B'},1,ceil(numel(ADS.Files)/2))];
ADS.Labels = labels;

countEachLabel(ADS)
ans =

  2x2 table

    Label    Count
    _____    _____

      A       10  
      B       11  

Создайте два новых хранилища данных из файлов в ADS путем случайного рисования от каждой метки. Первый datastore, ADS1, содержит два случайных файла с меткой A и два случайных файла с меткой B. ADS2 содержит остающиеся файлы от каждой метки.

[ADS1,ADS2] = splitEachLabel(ADS,2,'randomized')
ADS1 = 

  audioDatastore with properties:

                       Files: {
                              ' .../toolbox/audio/samples/ChurchImpulseResponse-16-44p1-mono-5secs.wav';
                              ' .../build/matlab/toolbox/audio/samples/Engine-16-44p1-stereo-20sec.wav';
                              ' .../matlab/toolbox/audio/samples/MainStreetOne-24-96-stereo-63secs.wav'
                               ... and 1 more
                              }
                      Labels: {'A'; 'A'; 'B' ... and 1 more}
    AlternateFileSystemRoots: {}
             ReadFailureRule: 'error'
                 MaxFailures: Inf
              OutputDataType: 'double'


ADS2 = 

  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';
                              ' .../build/matlab/toolbox/audio/samples/Click-16-44p1-mono-0.2secs.wav'
                               ... and 14 more
                              }
                      Labels: {'A'; 'A'; 'A' ... and 14 more}
    AlternateFileSystemRoots: {}
             ReadFailureRule: 'error'
                 MaxFailures: Inf
              OutputDataType: 'double'

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

folder = fullfile(matlabroot,'toolbox','audio','samples');
ADS = audioDatastore(folder,'FileExtensions','.wav')
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 18 more
                              }
    AlternateFileSystemRoots: {}
             ReadFailureRule: 'error'
                 MaxFailures: Inf
              OutputDataType: 'double'
                      Labels: {}

Добавьте метку A в первую половину файлов и метку B к второй половине. Если существует нечетное число файлов, присвойте дополнительный файл метка B. Вызовите countEachLabel, чтобы подтвердить, что половина файлов маркирована A, и половина файлов маркированы B.

labels = [repmat({'A'},1,floor(numel(ADS.Files)/2)), ...
          repmat({'B'},1,ceil(numel(ADS.Files)/2))];
ADS.Labels = labels;

countEachLabel(ADS)
ans =

  2x2 table

    Label    Count
    _____    _____

      A       10  
      B       11  

Создайте два новых хранилища данных из файлов в ADS, только включая файлы с меткой A. ADS1 содержит первые 70% файлов с меткой A, и ADS2 содержит остающиеся 30% меток с меткой A.

[ADS1,ADS2] = splitEachLabel(ADS,0.7,'Include','A')
ADS1 = 

  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 4 more
                              }
                      Labels: {'A'; 'A'; 'A' ... and 4 more}
    AlternateFileSystemRoots: {}
             ReadFailureRule: 'error'
                 MaxFailures: Inf
              OutputDataType: 'double'


ADS2 = 

  audioDatastore with properties:

                       Files: {
                              ' .../BR2019ad/build/matlab/toolbox/audio/samples/Heli_16ch_ACN_SN3D.wav';
                              ' .../matlab/toolbox/audio/samples/JetAirplane-16-11p025-mono-16secs.wav';
                              ' .../build/matlab/toolbox/audio/samples/Laughter-16-8-mono-4secs.wav'
                              }
                      Labels: {'A'; 'A'; 'A'}
    AlternateFileSystemRoots: {}
             ReadFailureRule: 'error'
                 MaxFailures: Inf
              OutputDataType: 'double'

Эквивалентно, можно разделить только метку A исключением метки B.

[ADS1,ADS2] = splitEachLabel(ADS,0.7,'Exclude','B')
ADS1 = 

  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 4 more
                              }
                      Labels: {'A'; 'A'; 'A' ... and 4 more}
    AlternateFileSystemRoots: {}
             ReadFailureRule: 'error'
                 MaxFailures: Inf
              OutputDataType: 'double'


ADS2 = 

  audioDatastore with properties:

                       Files: {
                              ' .../BR2019ad/build/matlab/toolbox/audio/samples/Heli_16ch_ACN_SN3D.wav';
                              ' .../matlab/toolbox/audio/samples/JetAirplane-16-11p025-mono-16secs.wav';
                              ' .../build/matlab/toolbox/audio/samples/Laughter-16-8-mono-4secs.wav'
                              }
                      Labels: {'A'; 'A'; 'A'}
    AlternateFileSystemRoots: {}
             ReadFailureRule: 'error'
                 MaxFailures: Inf
              OutputDataType: 'double'

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

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 26 more
                              }
    AlternateFileSystemRoots: {}
             ReadFailureRule: 'error'
                 MaxFailures: Inf
              OutputDataType: 'double'
                      Labels: {}

Составьте таблицу метки с двумя переменными:

  • containsMusic - Может быть или true или false.

  • instrument - Может быть Guitar, Drums или Unknown.

containsGuitar = contains(ADS.Files,'guitar','IgnoreCase',true);
containsDrums = contains(ADS.Files,'drum','IgnoreCase',true);
containsMusic = or(containsGuitar,containsDrums);

instrument = strings(size(ADS.Files));
instrument(:) = "Unknown";
instrument(containsGuitar) = "Guitar";
instrument(containsDrums) = "Drums";

Присвойте таблицу метки свойству Labels аудио datastore сопоставить строки таблицы метки со строками datastore. Вызовите countEachLabel, чтобы определить падения containsMusic и instrument.

labels = table(containsMusic,instrument);
ADS.Labels = labels;

containsMusicCount = countEachLabel(ADS,'TableVariable','containsMusic')
instrumentCount = countEachLabel(ADS,'TableVariable','instrument')
containsMusicCount =

  2x2 table

    containsMusic    Count
    _____________    _____

        false         22  
        true           7  


instrumentCount =

  3x2 table

    instrument    Count
    __________    _____

     Drums          4  
     Guitar         3  
     Unknown       22  

Разделите datastore ADS в два, на основе того, содержит ли звуковой файл музыку. ADS1 содержит 70% звуковых файлов, которые содержат музыку, и ADS2 содержит остальных. Вызовите countEachLabel, чтобы проверить, что отношение containsMusic == true к containsMusic == false сохраняется для новых хранилищ данных, в рамках округления.

[ADS1,ADS2] = splitEachLabel(ADS,0.7,'TableVariable','containsMusic');
ADS1_containsMusicCount = countEachLabel(ADS1,'TableVariable','containsMusic')
ADS2_containsMusicCount = countEachLabel(ADS2,'TableVariable','containsMusic')
ADS1_containsMusicCount =

  2x2 table

    containsMusic    Count
    _____________    _____

        false         15  
        true           5  


ADS2_containsMusicCount =

  2x2 table

    containsMusic    Count
    _____________    _____

        false          7  
        true           2  

Разделите datastore ADS в два, на основе типа инструмента, существующего в звуковом файле. ADS3 содержит 25% звуковых файлов, которые имеют инструментальную метку, и ADS4 содержит остальных. Вызовите countEachLabel, чтобы проверить, что отношение instrument == "drums" к instrument == "guitar" сохраняется для новых хранилищ данных, в рамках округления.

[ADS3,ADS4] = splitEachLabel(ADS,0.25,'TableVariable','instrument');
ADS3_instrumentCount = countEachLabel(ADS3,'TableVariable','instrument')
ADS4_instrumentCount = countEachLabel(ADS4,'TableVariable','instrument')
ADS3_instrumentCount =

  3x2 table

    instrument    Count
    __________    _____

     Drums          1  
     Guitar         1  
     Unknown        6  


ADS4_instrumentCount =

  3x2 table

    instrument    Count
    __________    _____

     Drums          3  
     Guitar         2  
     Unknown       16  

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

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

Составьте таблицу метки с двумя переменными:

  • containsMusic - Может быть или true или false.

  • instrument - Может быть Guitar, Drums или Unknown.

containsGuitar = contains(ADS.Files,'guitar','IgnoreCase',true);
containsDrums = contains(ADS.Files,'drum','IgnoreCase',true);
containsMusic = or(containsGuitar,containsDrums);

instrument = strings(size(ADS.Files));
instrument(:) = "Unknown";
instrument(containsGuitar) = "Guitar";
instrument(containsDrums) = "Drums";

Присвойте таблицу метки свойству Labels аудио datastore сопоставить строки таблицы метки со строками datastore. Вызовите countEachLabel, чтобы определить падения containsMusic и instrument.

labels = table(containsMusic,instrument);
ADS.Labels = labels;

containsMusicCount = countEachLabel(ADS,'TableVariable','containsMusic')
instrumentCount = countEachLabel(ADS,'TableVariable','instrument');
containsMusicCount =

  2x2 table

    containsMusic    Count
    _____________    _____

        false         22  
        true           7  

Разделите datastore ADS в два, на основе того, содержит ли звуковой файл музыку. ADS1 содержит 5 из каждой метки под табличной переменной containsMusic, и ADS2 содержит остальных. Вызовите countEachLabel, чтобы проверить.

[ADS1,ADS2] = splitEachLabel(ADS,5,'TableVariable','containsMusic');
ADS1_containsMusicCount = countEachLabel(ADS1,'TableVariable','containsMusic')
ADS2_containsMusicCount = countEachLabel(ADS2,'TableVariable','containsMusic')
ADS1_containsMusicCount =

  2x2 table

    containsMusic    Count
    _____________    _____

        false          5  
        true           5  


ADS2_containsMusicCount =

  2x2 table

    containsMusic    Count
    _____________    _____

        false         17  
        true           2  

Разделите datastore ADS в два, на основе типа инструмента, существующего в звуковом файле. ADS3 содержит 2 из каждой метки под табличной переменной instrument, и ADS4 содержит остальных. Вызовите countEachLabel, чтобы проверить.

[ADS3,ADS4] = splitEachLabel(ADS,2,'TableVariable','instrument');
ADS3_instrumentCount = countEachLabel(ADS3,'TableVariable','instrument')
ADS4_instrumentCount = countEachLabel(ADS4,'TableVariable','instrument')
ADS3_instrumentCount =

  3x2 table

    instrument    Count
    __________    _____

     Drums          2  
     Guitar         2  
     Unknown        2  


ADS4_instrumentCount =

  3x2 table

    instrument    Count
    __________    _____

     Drums          2  
     Guitar         1  
     Unknown       20  

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

свернуть все

Введите аудио datastore, заданный как объект audioDatastore.

Пропорция файлов, чтобы разделить, заданный как скаляр в интервале (0,1), или положительный целочисленный скаляр.

Если p находится в интервале (0,1), это представляет процент файлов от каждой метки, чтобы присвоить ADS1. Если p представляет процент, и он не приводит к целому числу, то splitEachLabel округляет в меньшую сторону до самого близкого целого числа.

Если p является целым числом, он представляет абсолютное количество файлов от каждой метки, чтобы присвоить ADS1. Когда p представляет много файлов, должны быть, по крайней мере, файлы p, сопоставленные с каждой меткой.

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

Список пропорций, заданных как скаляры в интервале (0,1) или положительные целочисленные скаляры.

Если пропорции находятся в интервале (0,1), они представляют процент файлов от каждой метки, чтобы присвоить выходным хранилищам данных. Когда пропорции представляют проценты, их сумма должна быть не больше, чем 1.

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

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

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: [ADS1,ADS2] = splitEachLabel(ADS,0.5,'Exclude','noisy')

Метки, чтобы включать, заданный как пара, разделенная запятой, состоящая из 'Include' и вектора, массива ячеек или массива строк метки, называют с тем же типом как свойство Labels. Каждое имя должно совпадать с одной из меток в свойстве Labels datastore.

Эта опция не может использоваться с опцией 'Exclude'.

Метки, чтобы исключить, заданный как пара, разделенная запятой, состоящая из 'Exclude' и вектора, массива ячеек или массива строк метки, называют с тем же типом как свойство Labels. Каждое имя должно совпадать с одной из меток в свойстве Labels datastore.

Эта опция не может использоваться с опцией 'Include'.

Имя табличной переменной, заданное как пара, разделенная запятой, состоящая из 'TableVariable' и вектора символов или строки. Когда свойство Labels аудио datastore, ADS является таблицей, необходимо использовать 'TableVariable', чтобы задать, какую метку вы используете для разделения.

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

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

свернуть все

Выведите аудио хранилища данных, возвращенные, когда audioDatastore возражает. ADS1 содержит заданную пропорцию файлов от каждой метки в ADS, и ADS2 содержит остающиеся файлы.

Список выходных хранилищ данных аудио, возвращенных как audioDatastore, возражает. Число элементов в списке - еще один что количество перечисленных пропорций. Каждое из новых хранилищ данных содержит пропорцию каждой метки в ADS, заданном p1,…,pN. Любые перенесенные файлы присвоены M th datastore.

Введенный в R2018b