Warning: Integer operands are required for colon operator when used as index
Show older comments
I am using fft functions and have twice in my code this warning message, bu no clue why I get the warning:
N = 2048*16;
sizeData = size(data,2);
padding = (N-sizeData)/2;
cInput = zeros([1 N]); % <-- Warning
cInput(padding+1:(padding+sizeData)) = data;
cInput = fftshift(cInput);
% transform
cfourier = fftshift(fft(cInput));
% iFFt
cOutput = ifft(ifftshift(cfourier));
cOutput = ifftshift(cOutput); % <-- Warning
AmpIFourier = abs(cOutput(padding+1:(padding+sizeData)));
1 Comment
Walter Roberson
on 8 Dec 2020
Haldun Hannis posted a question in the Answer section but deleted it while I was composing the reply. That reply follows:
(NFFT was constructed with 2^nextpow2 so is a power of 2)
WINDOW = hamming(NFFT/8+1); % Windowing function
NOVERLAP=length(WINDOW)*0.5;
provided that the data is not very small, NFFT will be exactly divisible by 8 so NFFT/8 would be an even integer unless NFFT is 8 or less (not impossible, should be tested for.) With NFFT/8 being even, NFFT/8+1 will be odd. So you are asking for an odd-size hamming filter to be created.
You then take the length of that, which will be odd. And you multiply by 0.5. With it being odd, you will not get an integer result.
You then pass that non-integer value as the overlap size, into a function that uses it something vaguely like
data(start:start+overlap-1)
and that is a problem because overlap is not an integer
You should be using floor() or ceil() to force integer
Accepted Answer
More Answers (2)
Oleg Komarov
on 20 Feb 2012
Perfectly fine
idx = 2.5:9;
But when you use to index a position:
A = rand(10,1);
A(idx)
There's no such a thing as position number 2.5
Jan
on 20 Feb 2012
N = 2048*16;
cInput = zeros([1 N]); % <-- Warning
No, I do not get a warning in this code. Are you sure, that this is the original code?
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!