Ура! Отличный взлом!
>> strrep(num2str([7740088 345], '%d'), ' ', '')
ans =
'7740088345'
>> strrep(num2str([345 7740088], '%d'), ' ', '')
ans =
'3457740088'
Спасибо!
-- 13.01.2024, 20:14 --Такой хак делайте:
strrep(num2str([7740088 345], '%d'), ' ', '')
И так должно было работать, но что-то этот новый Matlab по другому теперь это делает.
Реализовал с Вашей помощью нужную мне функцию:
function [res] = sumWords(A,B)
if any(isnan(A)) || any(isnan(B))
res=nan;
return
elseif all(A==0)
res=B;
return
elseif all(B==0)
res=A;
return
end
if all(A>0) || all(A<0)
if all(B>0) || all(B<0)
if all(A>0) && all(B<0) || all(A<0) && all(B>0)
if isequal(abs(A),abs(B))
res=zeros(1,length(A));
else
res=nan;
end
else
temp=str2num(strrep(num2str([A(end) B(1)], '%d'), ' ', ''));
if length(A)==1 || length(B)==1
res=temp;
else
res=sym([A(1:end-1) temp B(2:end)]);
end
end
else
error 'Each argument must contain only positive elements, or only negative elements, or only zeros.'
end
else
error 'Each argument must contain only positive elements, or only negative elements, or only zeros.'
end
Она работает корректно, но для только на небольших целых. Например, для больших аргументов получаем:
>> A
ans =
[ 345 577860808979686845212233454756554348078617853952]
>> B
ans =
[ 7740088 13]
>> sumWords(A,B)
ans =
[ 345, Inf, 13]
Если сразу использовать sym (для входных аргументов), то предложенная Вами конструкция "ломается":
>> sumWords(A,B)
Error using num2str (line 45)
Input to num2str must be numeric.
Error in sumWords (line 22)
temp=str2num(strrep(num2str([A(end) B(1)], '%d'), ' ', ''));
Помогите "добить", плиз!)