Matlab 显示所有256个强度级别 ;在16x16的矩阵中

Matlab 显示所有256个强度级别 ;在16x16的矩阵中,matlab,matrix,Matlab,Matrix,我需要得到一个强度不同的16x16矩阵,即从0到255从列1到列16。但是,此代码给出了不同的大小强度1x271。如何在16列中获得255个强度 for row = 1:16 for col = 1:16 i = 0; while i < 256 X(col) = i; i = i+1; col = col + 1; end end end size(X

我需要得到一个强度不同的16x16矩阵,即从
0
255
从列
1
到列
16
。但是,此代码给出了不同的大小强度
1x271
。如何在16列中获得255个强度

for row = 1:16
    for col = 1:16
        i = 0;
        while i < 256
            X(col) = i;
            i = i+1;
            col = col + 1;
        end
    end
end

size(X)
行=1:16的

对于col=1:16
i=0;
当我<256
X(col)=i;
i=i+1;
col=col+1;
结束
结束
结束
尺寸(X)

无循环:制作一个包含所有“强度级别”的数组
0:255
,然后简单地转换为一个16乘16的矩阵

out = reshape(0:255,[16 16])
out =
     0    16    32    48    64    80    96   112   128   144   160   176   192   208   224   240
     1    17    33    49    65    81    97   113   129   145   161   177   193   209   225   241
     2    18    34    50    66    82    98   114   130   146   162   178   194   210   226   242
     3    19    35    51    67    83    99   115   131   147   163   179   195   211   227   243
     4    20    36    52    68    84   100   116   132   148   164   180   196   212   228   244
     5    21    37    53    69    85   101   117   133   149   165   181   197   213   229   245
     6    22    38    54    70    86   102   118   134   150   166   182   198   214   230   246
     7    23    39    55    71    87   103   119   135   151   167   183   199   215   231   247
     8    24    40    56    72    88   104   120   136   152   168   184   200   216   232   248
     9    25    41    57    73    89   105   121   137   153   169   185   201   217   233   249
    10    26    42    58    74    90   106   122   138   154   170   186   202   218   234   250
    11    27    43    59    75    91   107   123   139   155   171   187   203   219   235   251
    12    28    44    60    76    92   108   124   140   156   172   188   204   220   236   252
    13    29    45    61    77    93   109   125   141   157   173   189   205   221   237   253
    14    30    46    62    78    94   110   126   142   158   174   190   206   222   238   254
    15    31    47    63    79    95   111   127   143   159   175   191   207   223   239   255
代码中的一个主要问题是行
col=col+1
;您正在循环中更改循环索引。这必然会导致奇怪且难以调试的错误。
循环可以如下所示:

X = zeros(16,16);  % Initialise X to the correct size
idx = 0;  % Initialise index

for cols = 1:16  % Columns first right?
    for rows = 1:16
        X(rows,cols) = idx;
        % X(idx+1) = idx;  % Uses linear indexing
        idx = idx+1;
    end
end


作为旁注:。将它用作变量可能会导致难以调试的错误,因此我建议避免它。使用
ii
idx
或描述性变量名。

在收到答案后直接删除问题被认为是非常粗鲁和不礼貌的。请阅读。立即删除问题不在该列表中。