Effacer les filtres
Effacer les filtres

converting array to single

28 vues (au cours des 30 derniers jours)
OLUBUKOLA ogunsola
OLUBUKOLA ogunsola le 14 Juin 2016
i have this output:
output = dial ('1FUNDOG4YOU')
output =
1 3 8 6 3 6 4 4 9 6 8
(1 X 11) cell
but this is what i want
output :13863644968
(1X 1)
I've tried all sort of ridiculous stuff, str2num and the likes but nothing works . any idea on what to do to make the conversion happen? thanks

Réponse acceptée

Stephen23
Stephen23 le 14 Juin 2016
Modifié(e) : Stephen23 le 14 Juin 2016
If the elements of the cell array are numeric scalars:
>> C = {1,3,8,6,3,6,4,4,9,6,8};
>> sprintf('%d',C{:})
ans = 13863644968
Or if they are strings:
>> C = {'1','3','8','6','3','6','4','4','9','6','8'};
>> sprintf('%s',C{:})
ans = 13863644968
Note that this string has size 1x11 (strings are not size 1x1 in MATLAB). If you need it to be stored in a 1x1 array, then you can put it inside a cell.
  3 commentaires
Azzi Abdelmalek
Azzi Abdelmalek le 14 Juin 2016
C = {1,3,8,6,3,6,4,4,9,6,8}
C=sprintf('%d',C{:})
C=uint64(str2num(C))
OLUBUKOLA ogunsola
OLUBUKOLA ogunsola le 14 Juin 2016
Modifié(e) : OLUBUKOLA ogunsola le 14 Juin 2016
perfect ! thanks

Connectez-vous pour commenter.

Plus de réponses (1)

Walter Roberson
Walter Roberson le 14 Juin 2016
Be careful, str2num() will create double precision with only 53 bits of precision. If you need the full 64 bits of precision you will need a different calculation.
C = {1,3,8,6,3,6,4,4,9,6,8};
Cv = uint64([C{:}]);
output = sum( Cv .* (uint64(10).^uint64(length(Cv)-1:-1:0)), 'native' );
  6 commentaires
OLUBUKOLA ogunsola
OLUBUKOLA ogunsola le 15 Juin 2016
problem with assert is it outputs an error , i don't want that i want output =0 . so i wrote the code this way
assert(isa(testStr,'alphanum'),'output=0.') but gets an error :
Error using dial (line 6) output=0
OLUBUKOLA ogunsola
OLUBUKOLA ogunsola le 15 Juin 2016
Modifié(e) : Walter Roberson le 15 Juin 2016
this is the code i wrote :
function output = dial (testStr)
c = containers.Map({'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}, ...
[0,1,2,3,4,5,6,7,8,9,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,7,8,8,8,9,9,9,9]) ;
testOut = NaN(1,numel(testStr)) ;
x=all(isstrprop('testStr','alphanum'));
if x==1
for ii = 1:numel(testStr);
testOut(ii) = c(strcat(testStr(ii)));
C=sprintf('%d',testOut(:));
C=uint64(str2double(C));
end
output=C ;
else
output=0;
end
end

Connectez-vous pour commenter.

Catégories

En savoir plus sur Data Type Conversion dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by