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

 Akzeptierte Antwort

Walter Roberson
Walter Roberson am 15 Dez. 2013

0 Stimmen

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 Kommentare

FRANCISCO
FRANCISCO am 15 Dez. 2013
The value that is not positive is "0". How I can solve?. I've thought about replacing the "0" with "100" that I can solve
Walter Roberson
Walter Roberson am 15 Dez. 2013
What behavior would you like to see for the 0? Would you like the 0 to be counted or omitted ?
FRANCISCO
FRANCISCO am 15 Dez. 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
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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Produkte

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by