Simplify Matrix decimal to integers

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'.

回答 (2 件)

Alan Stevens
Alan Stevens 2021 年 10 月 19 日
編集済み: Alan Stevens 2021 年 10 月 19 日

0 投票

One way is
M = [881/2158 985/1393 780/1351
881/2158 -985/1393 780/1351
-881/1079 0 780/1351]
M = 3×3
0.4082 0.7071 0.5774 0.4082 -0.7071 0.5774 -0.8165 0 0.5774
ip = find(M>=0);
in = find(M<0);
M(ip) = ceil(M(ip));
M(in) = floor(M(in));
disp(M)
1 1 1 1 -1 1 -1 0 1
Don't know where you got the -2 from though!

1 件のコメント

Shaunak Bagade
Shaunak Bagade 2021 年 10 月 19 日
I don't want to round the numbers ... I need to simplify it like 881/2158 is common factor in column 1 ... 985/1393 in column 2 ... 780/1351 in column 3

サインインしてコメントする。

Cris LaPierre
Cris LaPierre 2021 年 10 月 19 日
編集済み: Cris LaPierre 2021 年 10 月 19 日

0 投票

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 件のコメント

Shaunak Bagade
Shaunak Bagade 2021 年 10 月 19 日
I don't want to round the numbers ... I need to simplify it like 881/2158 is common factor in column 1 ... 985/1393 in column 2 ... 780/1351 in column 3
Cris LaPierre
Cris LaPierre 2021 年 10 月 19 日
You say you are getting an error message, so you must have code already. Please share what you have tried.
Cris LaPierre
Cris LaPierre 2021 年 10 月 19 日
Do you mean to do something like this? If so, look into elementwise division.
M = [881/2158 985/1393 780/1351
881/2158 -985/1393 780/1351
-881/1079 0 780/1351];
B = M./M(1,:)
B = 3×3
1 1 1 1 -1 1 -2 0 1
Steven Lord
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
B = 3×3
1 1 1 1 -1 1 -2 0 1
Shaunak Bagade
Shaunak Bagade 2021 年 10 月 19 日
編集済み: Shaunak Bagade 2021 年 10 月 22 日
Thanks But now we know M but what if we need to normalize it when M is not known

サインインしてコメントする。

カテゴリ

製品

リリース

R2021b

質問済み:

2021 年 10 月 19 日

編集済み:

2021 年 10 月 22 日

Community Treasure Hunt

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

Start Hunting!

Translated by