stftLayer error: "Size of input in T dimension must be greater than or equal to window length" despite correct input shape

7 views (last 30 days)
Hi everyone,
I'm encountering a confusing issue when using the stftLayer in MATLAB's Deep Learning Toolbox. I'm trying to pass a dlarray signal to an stftLayer inside a dlnetwork. The input signal has size:
size(signal) - [1 24 2401]
dims(signal) - 'CBT'
The stfftLayer configuration is:
winLength = 256;
overlap = 128;
fftLength = 256;
stft_net = [sequenceInputLayer(size(signal,1))
stftLayer("Window",winLength,"FFTLength",fftLength,"OverlapLength",overlap,"Name","stft")];
stftNet = dlnetwork(stft_net);
However, when I am trying to use this model, I am receiving the following error:
Error using stftLayer/validateProperties (line 238)
Window length must be greater than one sample.
Error in stftLayer (line 166)
this = validateProperties(this);
^^^^^^^^^^^^^^^^^^^^^^^^
The signal properties are shown below for further clarity
K>> size(signal)
ans =
1 24 2401
K>> dims(signal)
ans =
'CBT'
What could be causing the stftLayer to misinterpret the time dimension and throw the error, even when T is clearly larger than the window length? Any insights would be much appreciated.

Accepted Answer

Matt J
Matt J on 30 May 2025
Edited: Matt J on 30 May 2025
The window must be specified as a vector. Did you want a flat window? If so, then,
signal=rand(1,24,2401);
winLength = 256;
overlap = 128;
fftLength = 256;
stft_net = [sequenceInputLayer(height(signal)),
stftLayer("Window",ones(1,winLength),"FFTLength",fftLength,...
"OverlapLength",overlap,"Name","stft")]
stft_net =
2×1 Layer array with layers: 1 '' Sequence Input Sequence input with 1 dimensions 2 'stft' STFT stftLayer
  5 Comments

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!