Convert character matrix to numeric matrix
9 次查看(过去 30 天)
显示 更早的评论
Hello
I have this matrix:
A=['AB' 'AC';'AD' 'AE'];
I want to make each element of this words to have unique value of number. After that I want a code to transfer the numbers to the origin words.
I used this code:
A=['AB' 'AC';'AD' 'AE'];
A = double(A)
A = char(A)
The problem is that the output has the size 2*4 while it should be as the input 2*2 this due to that matlab deals with the letters not the words so it make each letter in separate column.
Please help me.
Thanks
3 个评论
Image Analyst
2019-1-12
Your final A is a character array yet you say you want a numerical array. Please state EXACTLY what you'd like to see as the output for the example you've given, so we know whether it needs to be numbers (like 1, 2, etc.), ASCII values (like 65, 66, etc.), or characters (like 'A', 'B', etc.).
采纳的回答
Stephen23
2019-1-12
If you really need a 2x2 array then one straightforward way would be to use a cell array:
>> A = {'AB','AC';'AD','AE'}
A =
'AB' 'AC'
'AD' 'AE'
>> B = cellfun(@double,A,'uni',0)
B =
[65,66] [65,67]
[65,68] [65,69]
>> C = cellfun(@char,B,'uni',0)
C =
'AB' 'AC'
'AD' 'AE'
更多回答(1 个)
Steven Lord
2019-1-12
If I understand your goal correctly, use the unique function.
sampleWords = {'apple', 'banana', 'cherry'};
n = numel(sampleWords);
data = sampleWords(randi(n, 1, 10))
[uniqueWords, generateUniqueWordsFromData, generateDataFromUniqueWords] = unique(data);
data2 = uniqueWords(generateDataFromUniqueWords)
isequal(data, data2)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!