Simplify Matrix decimal to integers
조회 수: 10 (최근 30일)
이전 댓글 표시
I do not want
881/2158 985/1393 780/1351
881/2158 -985/1393 780/1351
-881/1079 0 780/1351
But I want
1 1 1
1 -1 1
-2 0 1
How do I do this using one single function ?
I get this error if I use simplify
Check for incorrect argument data type or missing argument in call to function 'simplify'.
댓글 수: 0
답변 (2개)
Alan Stevens
2021년 10월 19일
편집: Alan Stevens
2021년 10월 19일
One way is
M = [881/2158 985/1393 780/1351
881/2158 -985/1393 780/1351
-881/1079 0 780/1351]
ip = find(M>=0);
in = find(M<0);
M(ip) = ceil(M(ip));
M(in) = floor(M(in));
disp(M)
Don't know where you got the -2 from though!
Cris LaPierre
2021년 10월 19일
편집: Cris LaPierre
2021년 10월 19일
It's likely going to take two functions: one to convert your symbolic expressions to numeric, and a second to round.
I would probably do something like
new_var = round(double(old_var))
댓글 수: 5
Steven Lord
2021년 10월 19일
Or you could normalize by the first element in each column.
M = [881/2158 985/1393 780/1351
881/2158 -985/1393 780/1351
-881/1079 0 780/1351];
B = normalize(M, 1, 'scale', 'first') % Normalize in dimension 1
참고 항목
카테고리
Help Center 및 File Exchange에서 Logical에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!