MATLAB: How can one define this variable in an elegant way

MATLAB

I want to define a variable x that is 300*1 vector. For the first 150 element, it is defined as an innerproduct of the first 150 element of a that is 300*1 and b that is 150*1. For the remaining 150 element, it will be defined by polyval(s1) of the remaining 150 element of a. I wrote
x=zeros(300,1)
for i=1:150
x(i,1)=a(i,1)*b(i,1)
end
for i=151:300
x(i,1)=polyval(s1,a(i,1))
end
But how can one write it in a more compact way?

Best Answer

x(1:150)=a(1:150).*b;
x(151:300)=polyval(s1,a(151:300));