【问题标题】:Find minimum across rows and count the total number of minimums across each column in Matlab在Matlab中查找跨行的最小值并计算每列的最小值总数
【发布时间】:2020-03-07 23:56:57
【问题描述】:

我首先需要在 Column_A、Column_B 和 Column_C 中找到每一行的最小值,然后获取在 Matlab 中的每一列下找到的最小值的总数。 例如,表格如下:

Column_A = [1.5;200;300;-1.5;49];
Column_B = [100.5;2;1;0;1];
Column_C= [1.25;500;3;0.01;200];
T = table(Column_A,Column_B,Column_C)

Column_A、Column_B 和 Column_C 下每行的最小值的表 (T) 以 橙色 突出显示:

我希望创建以下输出,它显示 Column_A、Column_B 和 Column_C 下最小值的总数:

【问题讨论】:

    标签: matlab


    【解决方案1】:

    您可以应用以下解决方案:

    • 将表 T 转换为数值矩阵。
    • 查找跨行最小值的索引。
    • 使用histcounts计算每个索引的元素个数。
    • 以所需格式构建新表。

    代码如下:

    % Build sample input:
    Column_A = [1.5;200;300;-1.5;49];
    Column_B = [100.5;2;1;0;1];
    Column_C= [1.25;500;3;0.01;200];
    T = table(Column_A,Column_B,Column_C);
    
    % Convert T to matrix
    A = T{:, :};
    
    % Find minimum across rows, and the index of the minimum:
    % You may ignore M: [~, I] = min(A, [], 2);
    [M, I] = min(A, [], 2); % M = [1.25, 2, 1, -1.5, 1]', and I = [3, 2, 2, 1, 2]
    
    % Compute total count of the minimum values under each column, by collecting histogram:
    Minimum_Count = (histcounts(I, size(A, 2)))';
    
    % Build output table:
    Columns = T.Properties.VariableNames'; % Get columns names from T
    T2 = table(Columns, Minimum_Count);
    

    结果:

    T2 =
    
      3×2 table
    
         Columns      Minimum_Count
        __________    _____________
    
        'Column_A'          1      
        'Column_B'          3      
        'Column_C'          1      
    

    【讨论】:

      【解决方案2】:
      Column_A = [1.5; 200; 300; -1.5; 49];
      Column_B = [100.5; 2; 1; 0; 1];
      Column_C = [1.25; 500; 3; 0.01; 200];
      
      % create matrix
      M = [Column_A, Column_B, Column_C];
      
      % find min in each row
      min_values = min(M, [], 2) == M;
      count_T = sum(min_values);
      
      % create table
      Columns = ['Column_A'; 'Column_B'; 'Column_C'];
      T = table(Columns, count_T');
      T.Properties.VariableNames([2]) = {'Minimum Count'};
      disp(T)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-25
        相关资源
        最近更新 更多