Сложный однострочный способ создания матрицы, подобной этой, заключается в свертке:
M = sign(conv2(eye(matrix_size),ones(band_width+1),'same'));
единичная матрица создается с заданным размером, затем сворачивается в2-D с квадратной матрицей из единиц , затем преобразованной в нули и единицы путем взятия знака .
Вышеприведенное хорошо для создания относительно небольшихне разреженные матрицы.Для больших матриц свертка может дорого обойтись, и вы, вероятно, захотите представить результат в виде разреженной матрицы .Вот как вы можете сделать это обычным способом, используя SPDIAGS :
M = spdiags(ones(matrix_size,2*band_width+1),...
-band_width:band_width,matrix_size,matrix_size);