我正在尝试编写一个标记测试结果的函数。参与者给出的答案存储在nx1单元阵列中。但是,这些文件存储为字母。我正在寻找一种方法将(a-d)转换成数字(1-4)即。 a = 1,b = 2因此可以使用逻辑运算比较这些答案。
到目前为止我所拥有的是:
[num,txt,raw] = xlsread(' FolkPhysicsMERGE.xlsx',' X3:X142');
FolkPhysParAns = TXT;
我似乎能够找到如何将数字转换为字母而不是相反的方式。我觉得应该有一个相对简单的方法来做这个,任何想法?
答案 0 :(得分:2)
如果您有一个字母单元格数组:
>> data = {'a','b','c','A'};
你只需要:
答案 1 :(得分:0)
以为我不妨写一个答案...... 您可以使用strrep将'a'替换为'1'(注意它是字符串格式),并对所有26个字母执行此操作,然后使用cell2mat将字符串'1' - '26'等转换为数字1 -26。
让我们说:
t = {'a','b','c'} //%Array of Strings
t = strrep(t,'a','1') //%replace all 'a' with '1'
t = strrep(t,'b','2') //%replace all 'b' with '2'
t = strrep(t,'c','3') //%replace all 'c' with '3'
%// Or 1 line:
t = strrep(g,{'a','b','c'},{'1','2','3'})
>> t =
'1' '2' '3'
output = cellfun(@str2num,t,'un',0) //% keeps the cell structure
>> output =
[1] [2] [3]
或者:
output = str2num(cell2mat(t')) //% uses the matrix structure instead, NOTE the inversion ', it is crucial here.
>> output =
1
2
3