我有一个向量,A = [2 2 4 5]。我想将A转换为数字。答案应该是2245。
实施例2.B = [5,6,7,8,9]。答案应该是56789。
感谢。
PS。谢谢大家。现在我理解将矢量转换为字符串并删除空格,然后转换回数字。
答案 0 :(得分:3)
你可以试试这个 -
>> a = [2 3 10];
>> str2num(strrep(num2str(a), ' ', ''))
ans =
2310
为什么会这样?好吧,num2str
(“数字到字符串”)将矢量转换为其字符表示
>> num2str(a)
ans =
2 3 10
这几乎是你想要的,除了数字之间的空格。因此,您调用strrep
(“string replace”)将所有空格(' '
)替换为空字符串(''
)
>> strrep('hi there', ' ', '')
ans =
hithere
最后使用str2num
(“string to number”)将结果字符串转换回数字。
答案 1 :(得分:2)
获取每个数字,将其转换为字符串并连接结果。取这个字符串并将其转换回数字。您可以在数组上使用num2str
,使用ismember
删除此转化产生的所有空格,然后将字符串转换回num2str
的数字:
C = [2 3 10];
strC = num2str(C);
strC(ismember(strC, ' ')) = [];
out = str2num(strC)
out =
2310
或者,您可以在运行num2str
后使用strrep
替换所有空格,然后转换回数字:
C = [2 3 10];
strC = num2str(C);
strC = strrep(strC, ' ', '');
out = str2num(strC)
out =
2310
给克里斯泰勒戴上帽子,这一切都可以在一行中完成:
out = str2num(strrep(num2str(C), ' ', ''))
out =
2310
另一个用于学术目的的是使用正则表达式。具体来说,对从num2str
输出的转换后的字符串数组使用regexprep
,并替换所有空格:
C = [2 3 10];
strC = num2str(C);
out = str2num(regexprep(strC, '\s*', ''))
out =
2310
模式\s*
搜索0个或更多空白字符。我们发现这些并将它们置之不理。
答案 2 :(得分:2)
感谢@obchardon进行更正。
这只使用算术(没有字符串)。它适用于大于0
的数字。 A
可以是行或列向量。
A = [2 0 3 10];
x = cumsum(floor(log10(A.'+(A.'==0)))+1);
x = x(end)-x;
result = A(:).'*10.^x
给出了
result =
20310
答案 3 :(得分:1)
如果要将所有数字串在一起,就像它们是单个整数中的数字一样,您可以将矢量转换为字符串,删除空格以将数字合并在一起,然后将其转换回单个数字。
这种方式将处理每个向量元素中的任意数量的数字(假设它们都是实数整数),而不是试图将每个元素乘以10的相应幂并取总和。
示例代码:
A = [2 44 12 6];
Astr = num2str(A);
Astr(strfind(Astr, ' ')) = [];
Anum = str2double(Astr);
答案 4 :(得分:1)
这使用num2str
而不必担心空格。
使用num2str
将arrayfun
应用于每个数字,con cat
输入生成的字符串,然后转换回数字。可悲的是,它比空格删除或数字方法慢得多。
numStrings = arrayfun(@num2str,a,'uni',0);
out = str2num(cat(2,numStrings{:}))
out =
2310