MATLAB Answers

Qian
0

how to simplify multi- if statement

Qian
さんによって質問されました 2012 年 12 月 6 日
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
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?

サインイン to comment.

タグ

2 件の回答

Login_Name
回答者: Login_Name
2012 年 12 月 6 日
編集済み: Login_Name
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 件のコメント

Qian
2012 年 12 月 6 日
I think that's still not going to solve my problem fully, since My string is not in alpha beta order, and it's not fully 26 letters.
Login_Name
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)
2012 年 12 月 6 日
Using randi, it is not guaranteed that each character in STR is mapped onto a unique value ...

サインイン to comment.


Rick Rosson
回答者: Rick Rosson
2012 年 12 月 6 日

aStr = 'ABCDE';
x = uint8(aStr) - 64;

  1 件のコメント

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.

サインイン to comment.



Translated by