如何在任意大小的矩阵中制作零的菱形? [英] How can I make a diamond of zeroes in a matrix of any size?

查看:81
本文介绍了如何在任意大小的矩阵中制作零的菱形?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个N×M的正方形矩阵,奇数个维度,例如,对于5 x 5的矩阵,我想放置一个零的菱形:

I have a square Matrix N x M, odd dimensions, and I want to put a diamond of zeroes, for example, for a 5 x 5 matrix:

1 3 2 4 2
5 7 8 9 5
3 2 4 6 3 
6 8 2 1 3 
3 3 3 3 3 

已转换为:

1 3 0 4 2 
5 0 8 0 5 
0 2 4 6 0 
6 0 2 0 3
3 3 0 3 3 

如何有效地做到这一点?

How can this be done efficiently?

推荐答案

我要咬一下,这是一种方法:

I'll bite, here is one approach:

% NxN matrix
N = 5;
assert(N>1 && mod(N,2)==1);
A = magic(N);

% diamond mask
N2 = fix(N/2);
[I,J] = meshgrid(-N2:N2);
mask = (abs(I) + abs(J)) == N2;

% fill with zeros
A(mask) = 0;

结果:

>> A
A =
    17    24     0     8    15
    23     0     7     0    16
     0     6    13    20     0
    10     0    19     0     3
    11    18     0     2     9

这篇关于如何在任意大小的矩阵中制作零的菱形?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆