Matlab:返回包含字母表前n个字符的字符串的函数

时间:2016-03-05 15:55:24

标签: matlab

我希望有一个函数generate(n)生成字符串中附加字母的第一个n小写字符(因此:1<=n<=26

例如:

generate(3) --> 'abc'
generate(5) --> 'abcde'
generate(9) --> 'abcdefghi'

我是Matlab的新手,如果有人能向我展示如何编写该功能的方法,我会感到高兴。当然,这将涉及使用字符的ASCII代码进行算术运算 - 但我不知道如何执行此操作以及Matlab提供的类型。

3 个答案:

答案 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;