【问题标题】:Printing MATLAB Elements using loop使用循环打印 MATLAB 元素
【发布时间】:2020-12-11 17:17:56
【问题描述】:

我正在使用 MATLAB 打印一个 3x3 矩阵 [2,3,4;5,7,8;1,4] ,现在如何使用循环打印矩阵的边界元素。所以(7)不应该按照下面的方式打印在输出中

 2     3     4
 5           8
 1     4     3

【问题讨论】:

  • 您好 Mahmood,请考虑通过单击答案左侧的 将解决您的问题并且您认为最有帮助的答案标记为 accepted。如果您愿意,您还可以通过点击答案左侧的 获得 15 个声望点,然后upvote 所有有用的答案。

标签: arrays matlab matrix


【解决方案1】:

将您的矩阵转换为categorical 矩阵并将所有内部条目替换为图形空间,如下所示:

M = [2,3,4; 5,7,8; 1,4,3]; %given sample-input matrix
C = categorical(M); %converting to a categorical matrix
C(2:end-1, 2:end-1) = char(8199); %setting inner entries to a figure-space
disp(C); %displaying resultant values of C

结果是:

2      3      4 
5             8 
1      4      3 

【讨论】:

  • ????:简单的空间在这里行不通;您必须使用上面代码中所示的图形空间。
【解决方案2】:

这适用于任何大小的矩阵。矩阵应该不包含NaN。结果具有自动列间距

Matrix = [2 3 4 9; 5 7 8 4; 1 4 3 0]; % input
M = Matrix;                           % make a copy. Will be overwritten
M(2:end-1, 2:end-1) = NaN;            % set inner entries to NaN
c = num2str(M);                       % convert to char array. Provides column alignment
c = cellstr(c);                       % convert to cell array of char row vectors
c = strrep(c, 'NaN', '   ');          % replace 'NaN' in each char row vector by spaces
c = cell2mat(c);                      % convert back to char array
disp(c)                               % display

这个例子产生了显示

2    3    4    9
5              4
1    4    3    0

作为另一个例子(查看自动列间距),

Matrix = [1237123 5 72347; 23486234862 234234 9172364; 5 777 33];

生产

    1237123            5        72347
23486234862                   9172364
          5          777           33

【讨论】:

    【解决方案3】:

    使用 for 循环并省略打印内部数字的解决方案可以通过使用一组嵌套的 for 循环遍历行和列来完成。如果您只需要它适用于 3 by 3 的情况,您可以将 if 条件更改为:if(Row == 2 && Column == 2)。 if 语句检查以确保元素不在边界内:


    如果满足以下条件,则元素不在边框上:

    • Row 不等于 1
    Column 不等于 1
    Row 不等于 Number_Of_Rows
    Column 不等于 Number_Of_Columns

    Matrix = [2 3 4; 5 7 8; 1 4 3];
    
    [Number_Of_Rows,Number_Of_Columns] = size(Matrix);
    
    for Row = 1: Number_Of_Rows
        for Column = 1: Number_Of_Columns
        
        Value = Matrix(Row,Column);
        if (Row ~= 1 && Column ~= 1 && Row ~= Number_Of_Rows && Column ~= Number_Of_Columns)
            fprintf("    ",Value);
        else        
            fprintf("%d   ",Value);
        end
      
        end
        fprintf("\n");
    end
    

    使用 MATLAB R2019b 运行

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-11
      • 2015-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-20
      相关资源
      最近更新 更多