Skip to content

Commit 6b083cd

Browse files
authored
Update srmdpy.py
Skip reordering modes when a cutoff is given
1 parent be92da8 commit 6b083cd

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

srmdpy/srmdpy.py

+12-10
Original file line numberDiff line numberDiff line change
@@ -242,16 +242,18 @@ def SRMD(y, t=None, N_features=None, eps=None, *, max_frq=None, w=default_w,
242242
continue
243243
mode_index = np.equal(labels, i)
244244
modes[:, i] = features[:,mode_index] @ weights[mode_index]
245-
246-
# Sort modes by their norm in decreasing order
247-
norms = np.linalg.norm(modes, axis=0)
248-
sort_order = np.argsort(norms)[::-1]
249-
modes = modes[:,sort_order]
250-
251-
# Relabel features to match new order
252-
re_label = {k:v for v, k in enumerate(sort_order)}
253-
re_label[-1] = -1
254-
labels = np.array([re_label[l] for l in labels])
245+
246+
# Reorder modes by l2-norm for stability
247+
if not cutoff: # Do not reorder if a cutoff frequency was given
248+
# Sort modes by their norm in decreasing order
249+
norms = np.linalg.norm(modes, axis=0)
250+
sort_order = np.argsort(norms)[::-1]
251+
modes = modes[:,sort_order]
252+
253+
# Relabel features to match new order
254+
re_label = {k:v for v, k in enumerate(sort_order)}
255+
re_label[-1] = -1
256+
labels = np.array([re_label[l] for l in labels])
255257

256258
# Merge (sum) extra modes
257259
if n_modes and n_labels > n_modes:

0 commit comments

Comments
 (0)