필터 지우기
필터 지우기

How to recognize multiplication with out *

조회 수: 1 (최근 30일)
Dr. ARK
Dr. ARK 2015년 3월 19일
편집: Dr. ARK 2015년 3월 20일
Hello!!
I want to write a code where you can input a string of a polynomial for instance '2x+3' and matlab returns the string as '2*x+3'. The user can input any string of a polynomial and matlab adds the * where needed.
I was thinking of possibly using a for loop (length of the string) where it passes through each indices and use isletter or isnumeric and if I get a numeric followed by a letter The code addes a * in between.
Can someone help me implement this or have a better way of doing so. Thanks a lot!
  댓글 수: 3
John D'Errico
John D'Errico 2015년 3월 19일
And of course, how would it deal with the number 3e2, as this is a perfectly legal way of writing the number 300.
Dr. ARK
Dr. ARK 2015년 3월 19일
True, thanks for those questions!!

댓글을 달려면 로그인하십시오.

채택된 답변

James Tursa
James Tursa 2015년 3월 19일
편집: James Tursa 2015년 3월 19일
Brute force loop:
s = '2x + 3 - 5y';
isdigit = @(x)(x>='0'&x<='9');
s(s==' ') = []; % if you want to protect against blanks
n = numel(s);
t = s(1);
for k=2:n
if( isdigit(s(k-1)) && isletter(s(k)) )
t = [t '*'];
end
t = [t s(k)];
end
t =
2*x+3-5*y
There are ways to vectorize this and not increase the size of t in a loop, but for the small string size you will likely be dealing with it is hardly worth the effort.

추가 답변 (1개)

Guillaume
Guillaume 2015년 3월 19일
편집: Guillaume 2015년 3월 19일
Assuming you just want to insert a '*' between any number followed by any letter (that is ignore problems like brackets and 3e2 notation):
expression = '2x + 3 - 5y';
newexpression = regexprep(expression, '([0-9])([a-zA-Z])', '$1*$2')
edit: Actually, the following will not insert a '*' when the letter is followed by another number so will cope with 'e' notation:
expression = '2x + 3e5 - 1e2y';
newexpression = regexprep(expression, '([0-9])([a-zA-Z])(?![0-9])', '$1*$2')

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by