Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Replace numbers with string in matlab array

I have an array of numbers in MATLAB eg.,

a = [1 1 1; 2 2 1; 3 3 2; 4 5 1];

and I would like to replace the numbers with strings.

eg., 1= "apples"; 2= "hello"; 3 = "goodbye";

I can for example replace with other numbers eg.,

a(a==1) = 999
a(a==2) = 998

but I need to accomplish the same kind of thing by replacing with string. Not easy to me can someone help me out ? Thanks, Matilde

like image 956
Matilde Avatar asked Feb 10 '23 19:02

Matilde


2 Answers

In case your numbers always start with 1 and every number should be replaced, that's just indexing:

>> mp={'apples','hello','goodby'}

mp = 

    'apples'    'hello'    'goodby'

>> a = [1 1 1; 2 2 1; 3 3 2]

a =

     1     1     1
     2     2     1
     3     3     2

>> mp(a)

ans = 

    'apples'    'apples'    'apples'
    'hello'     'hello'     'apples'
    'goodby'    'goodby'    'hello' 
like image 177
Daniel Avatar answered Feb 13 '23 12:02

Daniel


This could be one approach to handle mixed data of strings and numbers for a cell array output -

%// Numeric array and cell array of input strings 
a = [1 1 1; 2 2 1; 3 3 2; 4 5 1];
names = {'apples','hello','goodbye'}

%// Create a cell array to store the mixed data of numeric and string data 
a_cell = num2cell(a)

%// Get the mask where the numbers 1,2,3 are which are to be replaced by
%// corresponding strings
mask = ismember(a,[1 2 3])

%// Insert the strings into the masked region of a_cell
a_cell(mask) = names(a(mask))

Code run -

a =
     1     1     1
     2     2     1
     3     3     2
     4     5     1
names = 
    'apples'    'hello'    'goodbye'
a_cell = 
    'apples'     'apples'     'apples'
    'hello'      'hello'      'apples'
    'goodbye'    'goodbye'    'hello' 
    [      4]    [      5]    'apples'
like image 41
Divakar Avatar answered Feb 13 '23 12:02

Divakar