Just try with hard coded www rather than ^.
What I meant is
RewriteCond %{HTTP_HOST} ^subdomain.example.com$ [NC]
means redirect starting with anything
try changing to
Code:
RewriteCond %{HTTP_HOST} www.subdomain.example.com$ [NC]
RewriteRule (.*) http://subdomain.example.com/ [R=301,L]