MATLAB Answers

0

Replication factors must be a row vector of integers or integer scalars.

Asked by Asghar Ali on 3 Mar 2017
Latest activity Commented on by Walter Roberson
on 3 Mar 2017
Replication factors must be a row vector of integers or integer scalars.
meanX = repmat(double(meanX), [nFilters/16, 1]);
Can anyone help me?

  0 Comments

Sign in to comment.

2 Answers

Answer by Walter Roberson
on 3 Mar 2017
 Accepted Answer

If nFilters was not an integer divisible by 16, then nFilters/16 would not be a positive integer. The number of repetitions you specify must be positive integers. For example,
meanX = repmat(double(meanX), [ceil(nFilters/16), 1]);
would be more likely to be a positive integer (but would still fail if nFilters was 0 or negative.)

  3 Comments

Thanks Walter, it works fine, but I get following error now: Non-singleton dimensions of the two input arrays must match each other.
rawValues = bsxfun(@minus, (filtX-bsxfun(@times, meanX, filtMean)) ./ stdX, whitening);
I suspect that your code relies upon the number of filters being a multiple of 16, such as would be the case if you had 176 filters instead of 175.

Sign in to comment.


Answer by David J. Mack on 3 Mar 2017

nFilters/16 is probably not an integer. Depending on your needs, try round(nFilters/16) instead or use a number of filters which is an integer multiple of 16.
Greetings, David

  0 Comments

Sign in to comment.