将数字分配给Excel中的字母

7次观看(最近30天)
starg0rl
starg0rl 2020年1月29日
编辑: 马特的撕裂 2020年1月30日
我的Excel电子表格(已加载到MATLAB)上有一个列,每个单元格包含A B或C。
例如:x1 = [a b a a a a a a a a b c a a a a a a a b c a b a a a a a a a a a a b c]''
我想从此列[A B]或[A B C]中提取
我考虑将1分配给A,2至B,3至C,以便以下列如下:
x2 = [1 2 1 1 1 1 1 2 3 1 2 1 1 1 2 3 1 2 1 1 1 1 1 1 1 1 2 3]''
然后,我将使用diff(x2)获取连续值。
我很难将数字分配给字母。有办法这样做吗?还是有更好的方法?

答案(2)

马特的撕裂
马特的撕裂 2020年1月29日
我不明白您想从原始数据中获得什么。如果你这样做 diff(x2) 你会得到
[1 -1 0 0 0 0 1 1 -2 1 -1 0...这是给予的
这是什么意思(就字母A,B,C而言)?
在示例中,您给( x1 ),预期的输出是什么?为什么?
您是否要删除重复?也就是说,x1的结果是
[a b a b c a b a b c a b a b c]
如果是这样,我建议确保 x1 是字符串或分类,然后这样做:
y = x1;%制作副本(因此没有更改X1)
y(x1(1:end-1)== x1(2:end))= []%删除重复序列(值与以前的值相同)
2条评论
马特的撕裂
马特的撕裂 2020年1月30日
“我需要找到它们的索引,以便我可以在Excel中的另一列上找到属于它们的数据”
好的,最终目标是什么?因为您所描述的听起来像是逻辑索引:
x1 = [A A B A C A B B A C]%组
y = [4 6 2 7 4 4 6 2 1 7]%其他数据
>> y(x1 ==“一个”
ans =
4 6 7 4 1
>> y(x1 ==“ B”
ans =
2 6 2
>> y(x1 ==“C”
ans =
4 7
您能举一个简单的例子,说明您要在最后要获得什么吗?
如果您真的只想将字母转换为数字值,则可以使用Fangjun Jiang建议的内容(从ASCII CHAR值中减去64),或者如果您进行X1分类,则可以做到 双(x1) 。但是我认为这不是您的最终目标,因此可能会有更好的方法。

登录发表评论。


Fangjun Jiang
Fangjun Jiang 2020年1月29日
x1 = {'一个',,,,'b',,,,'C'}';
y = cell2mat(x1)-64

社区寻宝

在Matlab Central中找到宝藏,发现社区如何为您提供帮助!

开始狩猎!