⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 make_summary_impls_stats_table.m

📁 我认为很不错的语音处理的matlab源代码
💻 M
📖 第 1 页 / 共 2 页
字号:
                        sum_num_channels_a(e1, e3)=num_diff_channels;
                        num_channels_array(e1)=max([num_diff_channels, num_channels_array(e1)]);
                    case 3
                        num_channels_a(e1, e3)=num_channels;
                        num_diff_channels_a(e1, e3)=num_diff_channels;
                        sum_num_channels_a(e1, e3)=num_channels+num_diff_channels;
                        num_channels_array(e1)=max([num_channels+num_diff_channels, num_channels_array(e1)]);
                    otherwise
                        num_channels_a(e1, e3)=num_channels;
                        num_diff_channels_a(e1, e3)=num_diff_channels;
                        sum_num_channels_a(e1, e3)=num_channels+num_diff_channels;
                        num_channels_array(e1)=max([num_channels+num_diff_channels, num_channels_array(e1)]);
                end

            end
        end

    end

end


num_rows=sum(num_channels_array);
num_columns=num_vars*num_metrics;
bb2=zeros(num_rows, num_columns);
max_channels=max(num_channels_array);

num_rows=sum(num_channels_array)+num_files-1;
num_columns=num_vars*num_metrics+num_metrics-1;
bb=cell(num_rows, num_columns);

% Initialize the concatenated metrics table
column_heading=cell(3, num_columns );
num_row_headings=4;
row_heading=cell(num_rows,num_row_headings);


% Determine the length of the one-dimensional rounding arrays.
num_kinds=length(round_kind);
num_digits=length(round_digits);


% Create the files to save the sound and vibrations data
[fileout_base, ext]=file_extension(fileout);

% Open the output file
fid=fopen([fileout_base '.txt'], 'w');

% Fill in the concatenated metrics table
% Add row headings and column headings

for e8=1:num_stats;

    for e1=1:num_files;    % Data files

        for e3=1:num_vars; % Number of Variables (Number of Data Acquisition Systems)

            if ~isempty(s{e1,e3})

                num_channels=num_channels_a(e1, e3);
                num_diff_channels=num_diff_channels_a(e1, e3);
                sum_num_channels=sum_num_channels_a(e1, e3);

                if sum_num_channels >= 1

                    for e2=1:sum_num_channels; % Channels

                        for e4=1:num_metrics; % Data Metrics

                            e5=sum(num_channels_array(1:e1))-num_channels_array(e1)+e2;
                            e6=num_vars*(e4-1)+e3;

                            switch flag

                                case 1
                                    if e2 <= num_channels
                                        bb2(e5, e6)=s{e1,e3}.stats_of_metrics(e4, e2, stat_to_get(e8));
                                    end
                                case 2
                                    if e2 <= num_diff_channels
                                        bb2(e5, e6)=s{e1,e3}.diff_stats_of_metrics(e4, e2, stat_to_get(e8));
                                    end
                                case 3
                                    if e2 <= num_channels
                                        bb2(e5, e6)=s{e1,e3}.stats_of_metrics(e4, e2, stat_to_get(e8));
                                    elseif e2-num_channels <= num_diff_channels
                                        bb2(e5, e6)=s{e1,e3}.diff_stats_of_metrics(e4, e2-num_channels, stat_to_get(e8));
                                    end
                                otherwise
                                    if e2 <= num_channels
                                        bb2(e5, e6)=s{e1,e3}.stats_of_metrics(e4, e2, stat_to_get(e8));
                                    elseif e2-num_channels <= num_diff_channels
                                        bb2(e5, e6)=s{e1,e3}.diff_stats_of_metrics(e4, e2-num_channels, stat_to_get(e8));
                                    end
                            end

                            e5=e1-1+sum(num_channels_array(1:e1))-num_channels_array(e1)+e2;
                            e6=(num_vars+1)*(e4-1)+e3;


                            if num_kinds >= e4 && logical(num_digits >= e4)
                                rk=round_kind(e4);
                                rd=round_digits(e4);
                            else
                                rk=1;
                                rd=3;
                            end

                            
                            % Round the standard deviation and confidence 
                            % interval to 3 significant digits
                            if ismember(stat_to_get(e8), [3, 4]);
                                rk=1;
                                rd=3;
                            end
                        
                            switch flag

                                case 1
                                    if e2 <= num_channels
                                        [bufn, buf_str]=m_round(s{e1,e3}.stats_of_metrics(e4, e2, stat_to_get(e8)), rk, rd);
                                        bb{e5, e6}=buf_str{1};
                                    end
                                case 2
                                    if ismember(e4, ratio_metrics);
                                        rk=1;
                                        rd=3;
                                    end
                                    if e2 <= num_diff_channels
                                        [bufn, buf_str]=m_round(s{e1,e3}.diff_stats_of_metrics(e4, e2, stat_to_get(e8)), rk, rd);
                                        bb{e5, e6}=buf_str{1};
                                    end
                                case 3
                                    if e2 <= num_channels
                                        [bufn, buf_str]=m_round(s{e1,e3}.stats_of_metrics(e4, e2, stat_to_get(e8)), rk, rd);
                                        bb{e5, e6}=buf_str{1};
                                    elseif e2-num_channels <= num_diff_channels
                                        if ismember(e4, ratio_metrics);
                                            rk=1;
                                            rd=3;
                                        end
                                        [bufn, buf_str]=m_round(s{e1,e3}.diff_stats_of_metrics(e4, e2-num_channels, stat_to_get(e8)), rk, rd);
                                        bb{e5, e6}=buf_str{1};
                                    end
                                otherwise
                                    if e2 <= num_channels
                                        [bufn, buf_str]=m_round(s{e1,e3}.stats_of_metrics(e4, e2, stat_to_get(e8)), rk, rd);
                                        bb{e5, e6}=buf_str{1};
                                    elseif e2-num_channels <= num_diff_channels
                                        if ismember(e4, ratio_metrics);
                                            rk=1;
                                            rd=3;
                                        end
                                        [bufn, buf_str]=m_round(s{e1,e3}.diff_stats_of_metrics(e4, e2-num_channels, stat_to_get(e8)), rk, rd);
                                        bb{e5, e6}=buf_str{1};
                                    end
                            end

                            if e5 == 1
                                if e3==1
                                    column_heading{1, e6}=s{e1,e3}.metrics_description{1,e4};
                                    if ismember(e4, ratio_metrics)
                                        column_heading{2, e6}='ratio';
                                    else
                                        column_heading{2, e6}=s{e1,e3}.metrics_description{2,e4};
                                    end
                                end
                                column_heading{3, e6}=['var ' num2str(e3)];
                            end

                            if e6 == 1
                                if e2 == 1
                                    row_heading{e5, 1}=s{e1,e3}.filename;
                                end
                            end

                            if e4 == 1 && isequal(e3, 1)

                                switch flag

                                    case 1
                                        if e2 <= num_channels
                                            row_heading{e5, 3}=['Channel ' num2str(e2)];
                                        end
                                    case 2
                                        if e2 <= num_diff_channels
                                            row_heading{e5, 3}=['Diff Channel ' num2str(s{e1,e3}.diff_chan(2*e2-1)), ' - ', num2str(s{e1,e3}.diff_chan(2*e2))];
                                        end
                                    case 3
                                        if e2 <= num_channels
                                            row_heading{e5, 3}=['Channel ' num2str(e2)];
                                        elseif e2-num_channels <= num_diff_channels
                                            row_heading{e5, 3}=['Diff Channel ' num2str(s{e1,e3}.diff_chan(2*(e2-num_channels)-1)), ' - ', num2str(s{e1,e3}.diff_chan(2*(e2-num_channels)))];
                                        end
                                    otherwise
                                        if e2 <= num_channels
                                            row_heading{e5, 3}=['Channel ' num2str(e2)];
                                        elseif e2-num_channels <= num_diff_channels
                                            row_heading{e5, 3}=['Diff Channel ' num2str(s{e1,e3}.diff_chan(2*(e2-num_channels)-1)), ' - ', num2str(s{e1,e3}.diff_chan(2*(e2-num_channels)))];
                                        end
                                end
                            end
                        end

                    end

                end
            end

        end

    end


    % Concatenate the row_heading, column heading, and data text strings

    bb_table=cell(num_rows+3, num_columns+num_row_headings);

    bb_table(1:3, (num_row_headings+1):end)=column_heading;
    bb_table(4:end, 1:num_row_headings)=row_heading;

    bb_table(4:end, (num_row_headings+1):end)=bb;

    % Output the name of the metric

    fprintf(fid, '%s\t\r\n', [s{1,1}.stats_description{stat_to_get(e8)}, ' For Each File']);
    
    %  Print the column headings
    for e1=1:3;

        for e2=1:(num_columns+num_row_headings);
            fprintf(fid, '%s\t', bb_table{e1, e2});
        end

        if isequal(e1,1)
            fprintf(fid, '\t%s', 'Number of Samples');
            for e3=1:(num_vars-1); % Number of Variables (Number of Data Acquisition Systems)
                fprintf(fid, '\t');
            end
            fprintf(fid, '\t');
        elseif isequal(e1,3)
            for e3=1:num_vars; % Number of Variables (Number of Data Acquisition Systems)
                fprintf(fid, '\t%s', ['var', num2str(e3)]);
            end
            fprintf(fid, '\t');
        else
            for e3=1:num_vars; % Number of Variables (Number of Data Acquisition Systems)
                fprintf(fid, '\t');
            end
            fprintf(fid, '\t');
        end

        fprintf(fid, '\r\n');

    end

    fprintf(fid, '\r\n');

    % Print a summary of the descriptive statistics of the metrics from 
    % each data file.
    for e1=1:num_files;    % Data files

        %num_channels=num_channels_a(e1, e3);
        %num_diff_channels=num_diff_channels_a(e1, e3);

        for e2=1:num_channels_array(e1); % Channels

            e5=e1-1+sum(num_channels_array(1:e1))-num_channels_array(e1)+e2;

            % Print the row headings
            for e7=1:num_row_headings;
                fprintf(fid, '%s\t', bb_table{e5+3, e7});
            end

            % Print the data
            
            % Data Metrics
            for e4=1:num_metrics; 
                
                % Number of Variables (Number of Data Acquisition Systems)
                for e3=1:num_vars; 

                    num_channels=num_channels_a(e1, e3);
                    num_diff_channels=num_diff_channels_a(e1, e3);
                    sum_num_channels=sum_num_channels_a(e1, e3);

                    if ~isempty(s{e1,e3}) && logical(e2 <= sum_num_channels)
                        e6=(num_vars+1)*(e4-1)+e3;

                        fprintf(fid, '%s\t', bb_table{e5+3, e6+num_row_headings});
                    else
                        fprintf(fid, '\t');
                    end
                end
                fprintf(fid, '\t');

            end

            % Number of Variables (Number of Data Acquisition Systems)
            for e3=1:num_vars; 

                switch flag

                    case 1
                        if e2 <= num_channels
                            fprintf(fid, '%i\t', num_samples_ca{e1, e3}(e2, 1));
                        end
                    case 2
                        if e2 <= num_diff_channels
                            fprintf(fid, '%i\t', num_samples_ca{e1, e3}(e2, 1));
                        end
                    case 3
                        if e2 <= num_channels
                            fprintf(fid, '%i\t', num_samples_ca{e1, e3}(e2, 1));
                        elseif e2-num_channels <= num_diff_channels
                            fprintf(fid, '%i\t', num_samples_ca{e1, e3}(e2-num_channels, 1));
                        end
                    otherwise
                        if e2 <= num_channels
                            fprintf(fid, '%i\t', num_samples_ca{e1, e3}(e2, 1));
                        elseif e2-num_channels <= num_diff_channels
                            fprintf(fid, '%i\t', num_samples_ca{e1, e3}(e2-num_channels, 1));
                        end
                end
            end

            fprintf(fid, '\r\n');
        end
        fprintf(fid, '\r\n');
    end

    fprintf(fid, '\r\n');

    mean_vals=cell(length(stat_to_get2),1);
    max_num_channels=cell(length(stat_to_get2),1);
    max_num_diff_channels=cell(length(stat_to_get2),1);
    
    % Stats across channels
    for e9=1:length(stat_to_get2);
        [fid, mean_vals{e9, 1}, max_num_channels{e9, 1}, max_num_diff_channels{e9, 1}]=print_channel_stats(s, fid, flag, max_channels, num_metrics, num_vars, num_files, stat_to_get(e8), stat_to_get2(e9), num_channels_a, sum_num_channels_a, num_diff_channels_a, ratio_metrics, round_kind, round_digits);
        fprintf(fid, '\r\n');
    end
    
    
    %  Overall statistics, Stats across files for each channel
    for e9=1:length(stat_to_get2);
        [fid]=print_overall_stats(fid, s, flag, mean_vals{e9, 1}, max_num_channels{e9, 1}, max_num_diff_channels{e9, 1}, num_metrics, num_vars, stat_to_get2(e9), ratio_metrics, round_kind, round_digits);
        fprintf(fid, '\r\n');
    end
    
    fprintf(fid, '\r\n\r\n\r\n');
    
end


fclose(fid);
fclose('all');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -