我希望有一个函数generate(n)
生成字符串中附加字母的第一个n
小写字符(因此:1<=n<=26
)
例如:
generate(3) --> 'abc'
generate(5) --> 'abcde'
generate(9) --> 'abcdefghi'
我是Matlab的新手,如果有人能向我展示如何编写该功能的方法,我会感到高兴。当然,这将涉及使用字符的ASCII代码进行算术运算 - 但我不知道如何执行此操作以及Matlab提供的类型。
答案 0 :(得分:2)
我会依赖ASCII codes来做这件事。您可以使用char
将整数转换为字符。
因此,例如,如果我们想要一个&#34; e&#34;,我们可以查找&#34; e&#34;的ASCII码。 (101)并写:
char(101)
'e'
这也适用于数组:
char([101, 102])
'ef'
在你的情况下,最好的事情是在ASCII中,小写字母是97(&#34; a&#34;)和122(&#34; z&#34;)之间的所有数字。因此,下面的代码通过使用ASCII&#34; a&#34; (97)并从97开始创建一个长度为n
的数组。然后使用char
将这些数字转换为字符串。作为一个额外的好处,下面的版本确保阵列只能 转到122(&#34; z&#34;的ASCII)。
function output = generate(n)
output = char(97:min(96 + n, 122));
end
注意:对于上限,我们使用
96 + n
,因为如果n
为1,那么我们需要97:97
而不是97:98
,因为第二个将返回&#34; AB&#34 ;.这可以写成97:(97 + n - 1)
但是我写的方式,我只是简单地拉了&#34; -1&#34;进入常数。
你也可以把它变成一个简单的匿名函数。
generate = @(n)char(97:min(96 + n, 122));
generate(3)
'abc'
要编写最便携,最健壮的代码,我可能不需要那些硬编码的ASCII代码,所以我会使用类似下面的内容:
output = 'a':char(min('a' + n - 1, 'z'));
答案 1 :(得分:0)
......或者,你可以生成整个字母表并选择你想要的部分:
function str = generate(n)
alphabet = 'a':'z';
str = alphabet(1:n);
end
请注意,这会因n > 26
的索引超出范围错误而失败,因此您可能需要检查该错误。
答案 2 :(得分:-1)
您可以使用char
内置函数将整数值(或数组)转换为字符数组。
修改强> 修正了错误(参考Suever的评论)
function [str]=generate(n)
a=97;
% str=char(a:a+n)
str=char(a:a+n-1)
希望这有帮助。
Qapla&#39;