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

Antworten (2)

Alan Stevens
Alan Stevens am 19 Okt. 2021
Bearbeitet: Alan Stevens am 19 Okt. 2021

0 Stimmen

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 Kommentar

Shaunak Bagade
Shaunak Bagade am 19 Okt. 2021
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

Melden Sie sich an, um zu kommentieren.

Cris LaPierre
Cris LaPierre am 19 Okt. 2021
Bearbeitet: Cris LaPierre am 19 Okt. 2021

0 Stimmen

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 Kommentare

Shaunak Bagade
Shaunak Bagade am 19 Okt. 2021
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 am 19 Okt. 2021
You say you are getting an error message, so you must have code already. Please share what you have tried.
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
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 am 19 Okt. 2021
Bearbeitet: Shaunak Bagade am 22 Okt. 2021
Thanks But now we know M but what if we need to normalize it when M is not known

Melden Sie sich an, um zu kommentieren.

Produkte

Version

R2021b

Gefragt:

am 19 Okt. 2021

Bearbeitet:

am 22 Okt. 2021

Community Treasure Hunt

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

Start Hunting!

Translated by