how to simplify multi- if statement

5 ビュー (過去 30 日間)
Qian
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
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 Center および File ExchangeCharacters and Strings についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by