UMaterialParameterCollection changes do not affect Material in C++

I believe an instance of the MaterialParameterCollection is created at runtime on the world, and you have to set through that. In the editor, changing a property actually is pretty complex (see UMaterialParameterCollection::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent)

Try this:

  UMaterialParameterCollectionInstance *pInst = GetWorld()->GetParameterCollectionInstance( matParam);
    pInst->SetScalarParameterValue("noise_scale", 6.0f);