Info
此问题已关闭。 请重新打开它进行编辑或回答。
can't get all the other characters = 26
1 次查看(过去 30 天)
显示 更早的评论
Write a function m-file called stringcode that takes a string as input and produces an array containing a code for each letter in the string with A = 0, B = 1, ..., Z = 25 and all other characters getting the value 26.
function num = stringcode( word )
asc= double((word))
if asc >= 33 & asc <=47
asc = 26
else asc= double(upper(word))
end
asc= double(upper(word))
num = asc - double('A'); % simple arithmetic
end
2 个评论
James Tursa
2020-1-26
asc is a vector, but your code treats it as a scalar. You either need to wrap your code in a loop to do each character one at a time, or you need to vectorize your code.
回答(1 个)
Image Analyst
2020-1-26
You don't need all that complicated stuff. You almost had it at the end, so simply subtract 'A' and you're done. None of that foregoing stuff is needed. Watch:
>> num = 'ABCDEFGHIJKLMNOP' - 'A'
num =
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
2 个评论
Image Analyst
2020-1-26
In your function of course:
function num = stringcode( word )
num = word - 'A'
num(num<0 | num>25) = 26;
Just throw out all that useless stuff you had and have just those three lines. Basically the same as what you have except you don't need to cast to double
此问题已关闭。
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!