MATLAB矩阵赋值

给出一个矩阵(如下),使上方为0的数等于其下方不为0的数
即x=[0
0
0
0
0
0.466500000000000
0
0
0
0
0.612500000000000]
变成x=[0.466500000000000
0.466500000000000
0.466500000000000
0.466500000000000
0.466500000000000
0.612500000000000
0.612500000000000
0.612500000000000
0.612500000000000
0.612500000000000]

写循环当然可以,但是如果想算的更快,想炫技的话可以这么写:

x=[0
0
0
0
0
0.466500000000000
0
0
0
0
0.612500000000000];

tx=x(end:-1:1)';
tx(tx~=0)=diff([0,tx(tx~=0)]);
x=fliplr(cumsum(tx))'

x =

0.4665
0.4665
0.4665
0.4665
0.4665
0.4665
0.6125
0.6125
0.6125
0.6125
0.6125