MATLAB: How to split a large matrix into smaller matrices and assign random values

MATLABmatrixmatrix manipulation

I have a 180×180 matrix of 0's and I was to assign different range of random integers to each 45×45 set in the matrix. I have show the example output that I want for a much smaller matrix (10×10) that breaks it up into 5×5 matrices of different random values below. Any easy way to do this that doesn't involve a million for loops? I just want to expand this code to an N = zeros(180,180) type deal with 45×45 subparts.
N = zeros(10,10);
for i = 1:5
for j = 1:5
N(i,j) = randi([1,10]);
end
end
for i = 1:5
for j = 6:10
N(i,j) = randi([15,100])
end
end
for i = 6:10
for j = 6:10
N(i,j) = randi([1,17])
end
end
for i = 6:10
for j = 1:5
N(i,j) = randi([100,250])
end
end
N

Best Answer

low_vals = [1 15 1 100;
8 -4 17 3;
1 2 9 15;
0 -8 3 72];
high_vals = [10 100 17 250;
14 11 84 9;
33 11 99 222;
4 -3 88 105];
N = cell2mat( arrayfun(@(L, H) randi([L, H], 45, 45), low_vals, high_vals, 'Uniform', 0) );
The above would create 4 x 4 of 45 x 45 subblocks.