how to simplify multi- if statement

1 次查看(过去 30 天)
I'm trying to do the following work, given a string of 'ABCDE' etc,
for each letter, it will be assigned with a unique number.
How would I do it without putting 26 if and else if statement in a simple way?
I'm thinking of two matrices. But it may not be on the right track. Can anyone help with this case? Thanx in advance!
  1 个评论
Qian
Qian 2012-12-6
sorry for the bad description. I'm saying, the assignments between letters and numbers are given, what I want is to replace letter with numbers in the given way. The only method I was using is the if and else if statement with one-to-one assignment, but with longer string of letters, I don't really like to put 26 statement, is there any quicker way?

请先登录,再进行评论。

采纳的回答

Matt Fig
Matt Fig 2012-12-6
编辑:Matt Fig 2012-12-6
STR = char(65:90)
KEY = randi(10000,1,length(STR))
But what are you going to do with these that you would need an IF block for? Are you going to do something like encode a given string?
g_str = upper('Hello')
k_str = KEY(g_str-64)
  8 个评论
Matt Fig
Matt Fig 2012-12-6
But the same concept should apply. I subtracted 64 because we need to index starting from 1 and the ascii alphabet starts at 65.
Jos (10584)
Jos (10584) 2012-12-6
Using randi, it is not guaranteed that each character in STR is mapped onto a unique value ...

请先登录,再进行评论。

更多回答(1 个)

Rick Rosson
Rick Rosson 2012-12-6
aStr = 'ABCDE';
x = uint8(aStr) - 64;
  1 个评论
Qian
Qian 2012-12-6
thanx for that, but the problem is ABCDE are not assigned to patterned numbers, but some random numbers, for instance A=14, B=23, C=1, D=4,E=34 etc.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Data Type Conversion 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by