how to use abs function in this code?

5 views (last 30 days)
Ozan Mirzanli on 26 May 2020
Commented: Ozan Mirzanli on 26 May 2020
%Write a Matlab script to create random integer matrix with elements between -30 and 30.
%The size of the matrix must be first be read from user input. Use loops to sum of each row.
%Then find the differences between all pairs of these sums.
a=input('Enter the size of rows:');
b=input('Enter the size of columns:');
A=randi([-30 30],a,b)
r=zeros(a);
d=zeros(a);
for i=1:a
for j=1:b
r(i)=r(i)+A(i,j);
end
end
for k=1:a
for l=1:a
d(k,l)=(r(k)-r(l));
end
end
difference=triu(d,1)
%So I write this code and it worked -with a problem-. Let's say I created a 2x2 Matrix.
%TheSumOfFirstRow=2, TheSumOfSecondRow=3. As the result I wanna see both 2-3=-1 and 3-2=1.
%But the code that I wrote calculates just 2-3=-1.

KALYAN ACHARJYA on 26 May 2020
a=input('Enter the size of rows:');
b=input('Enter the size of columns:');
A=randi([-30 30],a,b)
r=zeros(a);
d=zeros(a);
for i=1:a
for j=1:b
r(i)=r(i)+A(i,j);
end
end
for k=1:a
for l=1:a
d(k,l)=abs((r(k)-r(l)));
end
end
difference=triu(d,1)

Show 1 older comment
KALYAN ACHARJYA on 26 May 2020
Then what actually you are trying to do?
Is this?
a=input('Enter the size of rows:');
b=input('Enter the size of columns:');
A=randi([-30 30],a,b)
sum_row=zeros(1,a);
for i=1:a
sum_row(i)=sum(A(i,:));
end
for k=1:length(sum_row)-1
d(k)=sum_row(k+1)-sum_row(k);
end
d(end)=sum_row(end)-sum_row(1);
Difference=d
Ozan Mirzanli on 26 May 2020
This is our matrix
A =
-14 9
11 -21
This is the result due to your second code
Difference =
-5 15
15 -5
This is the result how it should be
Difference =
5 (Sum of Row 1 - Sum of Row 2)
-15 (Sum of Row 2 - Sum of Row 1)
The sentences in parantheses are not gonna be in the result, I write them to explain what I exactly mean.
Ozan Mirzanli on 26 May 2020
any ideas?