Help with error in Matlab

2 views (last 30 days)
FRANCISCO
FRANCISCO on 15 Dec 2013
Commented: Walter Roberson on 15 Dec 2013
I have a cell named "r2" which has 2 rows and 1 column:
r2 {1,1} = 1046 x 1
r2 {2,1} = 1045 x 1
When analyzing the number of repetitions in a cell how in the following example:
r2 = {[1, 4, 3, 1], [2, 2, 3]};
I should have results:
r3 = {[1 2, 2 0, 3; 1 4 1], [1 0, 2; 2 3 1]};
In applying the code:
if true
% code
r2 = {[1, 4, 3, 1]; [2, 2, 3]};
r3 = cellfun (@ (x) [(1: máx (x)) ', accumArray (x (:), 1) ], r2, 'un', 0);
end
Matlab gives me the error:
*"Error using accumarray
First input SUBS must contain positive integer subscripts.
Error in @(x)[(1:max(x))',accumarray(x(:),1)]"*
How I can fix it?
Many thanks

Accepted Answer

Walter Roberson
Walter Roberson on 15 Dec 2013
invalid_entries = cellfun( @(x) x(x <= 0 | mod(x,1) ~= 0), r2, 'Uniform', 0);
Use that to find out which values are not positive integers.
  4 Comments
FRANCISCO
FRANCISCO on 15 Dec 2013
I consider the "0", then replaced it with "100" and then I had it in mind to place it in the cell, returning to change the "100" to "0". Many thanks
Walter Roberson
Walter Roberson on 15 Dec 2013
r3 = cellfun (@ (x) [(0: máx (x)) ', accumArray (x (:) + 1, 1) ], r2, 'un', 0);
Notice the +1 added to the x(:) so that 0 becomes index 1, 1 becomes index 2, and so on.

Sign in to comment.

More Answers (0)

Categories

Find more on Structures in Help Center and File Exchange

Tags

Products

Community Treasure Hunt

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

Start Hunting!