在MATLAB中创建一个矩阵,具有从左到右,从上到下的特定顺序

时间:2017-10-09 05:54:41

标签: matlab matrix

我正在尝试在MATLAB中创建一个矩阵。

矩阵从左到右以及从上到下从255到0。也就是说,左上角是矩阵唯一值为255的位置,最右边的列和最下面的行的值为0。

我试图这样做而不使用任何循环,任何想法?

3 个答案:

答案 0 :(得分:1)

以下是使用bsxfunmin的解决方案:

a = 255:-1:0;
result = bsxfun(@min, a, a.');

从MATLAB r2016b开始,你可以写:

result = min(a, a.');

对于最大值3,将生成此输出:

result =

   3   2   1   0
   2   2   1   0
   1   1   1   0
   0   0   0   0

答案 1 :(得分:0)

根据此处的答案:circle with gradient gray scale

一种可能的解决方案是:

N = 255; %// this decides the size of image
[X,Y] = meshgrid(1:-1/N:0, 1:-1/N:0) ;
out= X + Y-1;
out(out<0)=0;
out=uint8(out*255);

答案 2 :(得分:0)

您可以使用hankel

在一次操作中执行此操作
M = hankel(255:-1:0, zeros(1, 256));

输出一个较小的例子:

n = 3;  % Top left value
M = hankel(n:-1:0, zeros(1, n+1))

>> M = [ 3     2     1     0
         2     1     0     0
         1     0     0     0
         0     0     0     0 ]

像这样的结构的另一个有用功能是toeplitz。可以生成相同的结果:

M = fliplr(toeplitz(zeros(1, 256), 0:255));