MATLAB创建一个转换器函数(输入:整数)(输出:字符串)
在MATLAB中,我想创建一个函数,该函数输入一个整数并输出一个字符串,而不使用内置函数,如num2str、int2str或mat2str。 整数可能带有前导减号。MATLAB创建一个转换器函数(输入:整数)(输出:字符串),matlab,function,converter,Matlab,Function,Converter,在MATLAB中,我想创建一个函数,该函数输入一个整数并输出一个字符串,而不使用内置函数,如num2str、int2str或mat2str。 整数可能带有前导减号。 请帮忙 我要做的是将您的数字拆分为各个数字,并将它们放入一个数组中。然后,使用将此数字数组转换为字符。但是,您需要做的是获取每个数字并用48进行偏移。原因是char将存储在数组中的数字,找到映射到这些数字的ASCII等效字符,并将所有这些字符连接到单个字符串中。如果您查阅任何内容,您将看到0-9中的字符映射到48-57 第一个问题是
请帮忙 我要做的是将您的数字拆分为各个数字,并将它们放入一个数组中。然后,使用将此数字数组转换为字符。但是,您需要做的是获取每个数字并用48进行偏移。原因是
char
将存储在数组中的数字,找到映射到这些数字的ASCII等效字符,并将所有这些字符连接到单个字符串中。如果您查阅任何内容,您将看到0-9中的字符映射到48-57
第一个问题是找出如何将数字分割成数字。查看我上一篇关于如何在MATLAB中使用的帖子。此函数仅适用于提取一个数字。此外,这假设该数字为正。我们想要得到所有的数字,所以您只需要将其使用矢量化。因此,我们现在要做的是正常地将数字提取出来,而不考虑数字的符号。我们通过对这个数字应用绝对值函数来实现这一点,然后正常地应用算法。如果数字为负数,我们可以在算法末尾附加负号
使用我在上一篇文章中编写的算法,通过对其使用进行矢量化,其结果是每个数字将存储到数组中的一个元素中。假设您的号码存储在A
中,我们可以提取如下数字数组:
numDigits = floor(log10(abs(A))) + 1; %// Calculate total number of digits seen in the number
n = 1 : numDigits; %// Place digits into individual elements in the array
d = numDigits - (n - 1);
out_seq = floor(mod(abs(A), 10.^d) ./ 10.^(d-1)); %// Note: Absolute value
现在,最后一步是确定数字是否为负数。如果是,我们会在字符串中附加一个-
符号。如果没有,只需手动转换号码:
if A < 0
out = ['-' char(out_seq + 48)];
else
out = char(out_seq + 48);
end
还要注意,我在运行函数时检查了每个输出的类。经验证,它们都是
char
,这是一个字符串。听起来像是一个有趣的家庭作业。提示,检查char(65:67)
的输出,然后检查char(49:57)
。总是有sprintf('%d',x)
,但我认为这也是禁止的。很好的解释+我想是伟大的人物吧@Kamtal-没问题!我只是不想让你被否决@chappjc-哇!我写了那个答案,却不知道你写了一个类似的。。。酷!
function [out] = num_converter(A)
numDigits = floor(log10(abs(A))) + 1; %// Calculate total number of digits seen in the number
n = 1 : numDigits; %// Place digits into individual elements in the array
d = numDigits - (n - 1);
out_seq = floor(mod(abs(A), 10.^d) ./ 10.^(d-1)); %// Note: Absolute value
if A < 0
out = ['-' char(out_seq + 48)];
else
out = char(out_seq + 48);
end
>> out = num_converter(669965)
out =
669965
>> class(out)
ans =
char
>> out = num_converter(-669965)
out =
-669965
>> class(out)
ans =
char
>> out = num_converter(-633)
out =
-633
>> class(out)
ans =
char
>> out = num_converter(63323)
out =
63323
>> class(out)
ans =
char