I think it is the expansion order that confused you. Bash performs them in a specific order, and it's the brace expansion that comes first, followed by the variable expansion. This is why the brace expansion did not work in your example.
You can use eval to force bash into performing the expansion:
noise={5,10,15}dB # BAD IDEA, FOR DEMONSTRATION PURPOSES ONLY eval mkdir $noise
However, generally it's bad practice because if there's some malicious code inside $noise, it will be executed, as well.
As @Archemar points out in a comment, using an array might be a better idea, e.g.
noise=(5 10 15) mkdir "${arr[@]/%/dB}"
If you're passing the directory names from the command line, there should be no issues with brace expansion because it will be done by the interactive shell when you call the script. In other words, the following will work:
$ cat script.sh #!/bin/bash mkdir "$@" $ ./script.sh {5,10,15}dB
$noiseelsewhere, maybe your are looking for array not bash expansion.