problem in converting a matrix of integers to vector of integers using str2num and num2str
    10 views (last 30 days)
  
       Show older comments
    
Hello, 
I have a matrix  x of this form (these are example values)
    1 0 0 1 0
    0 1 0 0 0
    0 0 0 0 1
    1 0 0 1 1
I am trying to make a number out of each row so I used 
    y=strcat(num2str(x(:,1)),num2str(x(:,2)),num2str(x(:,3)),num2str(x(:,4)),num2str(x(:,5)));
which get me the result
'10011'
'01000'
'00001'
'10011'
Now I want to convert each string to a number but its not working. 
A = str2num(y)
A =
     []
Also, I tried different method all faild beause the size of y is  4x5 and not 4x1.
why does matlab consider each char as column and how can I avoid this problem?
Thanks
0 Comments
Accepted Answer
  Ameer Hamza
      
      
 on 11 Nov 2020
        
      Edited: Ameer Hamza
      
      
 on 11 Nov 2020
  
      Try this
x = [
    1 0 0 1 0
    0 1 0 0 0
    0 0 0 0 1
    1 0 0 1 1];
x = char(x+'0');
y = str2num(x)
Result
>> y
y =
       10010
        1000
           1
       10011
Or a faster solution
x = [
    1 0 0 1 0
    0 1 0 0 0
    0 0 0 0 1
    1 0 0 1 1];
y = x*10.^(size(x,2)-1:-1:0)';
6 Comments
  Ameer Hamza
      
      
 on 11 Nov 2020
				
      Edited: Ameer Hamza
      
      
 on 11 Nov 2020
  
			If you want a different number of elements in each row, then string datatype is more appropriate. For example
x = [
    1 0 0 1 0
    0 1 0 0 0
    0 0 0 0 1
    1 0 0 1 1
    5 0 0 90 5
    5 0 0 95 0];
y = mat2cell(string(x), 6, ones(1,size(x,2)));
y = strcat(y{:});
output
>> y
y = 
  6×1 string array
    "10010"
    "01000"
    "00001"
    "10011"
    "500905"
    "500950"
More Answers (0)
See Also
Categories
				Find more on Data Type Conversion 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!
