It is well-known that for any set partition of X one may construct a matroid by taking the subsets whose intersections with each block of the partition has at least one element (clearly one may generalize through the usage of weights $d_i$ for eavh block).
Well, does a converse of this result hold, i.e. given a matroid is there a way to obtain a set partition in a natural way?