MATLAB: How to create a new matrix by using existing values in a column

matrix manipulation

I've a column inluding the values of
>> B=[0.100;0.250;0.200;0.120;0.080;0.060;0.055;0.040;0.020]
B =
0.1000
0.2500
0.2000
0.1200
0.0800
0.0600
0.0550
0.0400
0.0200
But I want to make it as
0.100 0 0 0 0 0 0 0 0
0.250 0.100 0 0 0 0 0 0 0
0.200 0.250 0.100 0 0 0 0 0 0
0.120 0.200 0.250 0.1 0 0 0 0 0
0.080 0.120 0.200 0.250 0.1 0 0 0 0
0.060 0.080 0.120 0.200 0.25 0.1 0 0 0
0.055 0.060 0.080 0.120 0.2 0.25 0.1 0 0
0.040 0.055 0.060 0.080 0.12 0.2 0.25 0.1 0
0.020 0.040 0.055 0.060 0.08 0.12 0.2 0.25 0.1
How can I do it?

Best Answer

Simpler and much more efficient to use toeplitz:
>> B = [0.100;0.250;0.200;0.120;0.080;0.060;0.055;0.040;0.020];
>> C = zeros(size(B));
>> C(1) = B(1);
>> M = toeplitz(B,C)
M =
0.100 0 0 0 0 0 0 0 0
0.250 0.100 0 0 0 0 0 0 0
0.200 0.250 0.100 0 0 0 0 0 0
0.120 0.200 0.250 0.100 0 0 0 0 0
0.080 0.120 0.200 0.250 0.100 0 0 0 0
0.060 0.080 0.120 0.200 0.250 0.100 0 0 0
0.055 0.060 0.080 0.120 0.200 0.250 0.100 0 0
0.040 0.055 0.060 0.080 0.120 0.200 0.250 0.100 0
0.020 0.040 0.055 0.060 0.080 0.120 0.200 0.250 0.100