confront values in 2 matrix

Asked by Dario Riviezzo

Dario Riviezzo (view profile)

on 13 Sep 2019
Latest activity Edited by Matt J

Matt J (view profile)

on 13 Sep 2019
Accepted Answer by KALYAN ACHARJYA

KALYAN ACHARJYA (view profile)

hi, i have 2 different matrix with same dimensions and i need to know the min value against 2 values in the same position:
A=[ 0 1 3 5 6]
[2 3 5 8 9]
B=[2 2 4 7 8]
[3 5 7 9 10]
the algorithm confront the zero in first row first column of A with the 2 in first row first column of B and show the min value (0), so for the second row first column of each matrix and so on...i used a for cycle, but i want to know if i can try without any cycle.
In my cicle i use this:
for i 1:size(A)
find(A(1,:)<B(1,:)
end
how can i confront only element by element in the same position without any cycle?
i also have to use the elements of a matrix to do a scalar product using each element in a position and inserting it into a vector:
for i=1:length(A)
for j=1:N (size of rows)
ps1(i,j)=[A(i,j) 0]*[1 0]';
end
end
there is any way to do this without cycles?
i need the value in every position and that value is putted into a vector, then i make the scalar product with [1 0].
Tnx to all for the reply!

1 Comment

Stephen Cobeldick

Stephen Cobeldick (view profile)

on 13 Sep 2019
See Matt J's answer for the simplest and most efficient solution.

Products

Answer by KALYAN ACHARJYA

KALYAN ACHARJYA (view profile)

on 13 Sep 2019
Edited by KALYAN ACHARJYA

KALYAN ACHARJYA (view profile)

on 13 Sep 2019

"i have 2 different matrix with same dimensions and i need to know the min value against 2 values in the same position:"
A=randi(10,[2,5]) % Random 2x5 A Matrix
B=randi(10,[2,5]) % Random 2x5 B Matrix
result=(A<=B).*A+(A>B).*B

KALYAN ACHARJYA

on 13 Sep 2019
Dario Riviezzo

Dario Riviezzo (view profile)

on 13 Sep 2019
the second matrix (B) isn't made only of 1...i wrote that for an example, but it could be anything (with the same size row of A)
Dario Riviezzo

Dario Riviezzo (view profile)

on 13 Sep 2019
mmh thinking on this problem i can simply copy the same row to make a matrix with same dimension of the first, then simply add :)
u are teaching to me how to think on matrix!

Answer by Matt J

Matt J (view profile)

on 13 Sep 2019

min(A(1,:), B(1,:))

1 Comment

Stephen Cobeldick

Stephen Cobeldick (view profile)

on 13 Sep 2019
Gives the same as KALYAN ACHARJYA 's answer:
min(A,B)

Answer by Dario Riviezzo

Dario Riviezzo (view profile)

on 13 Sep 2019

still need this:
i also have to use the elements of a matrix to do a scalar product using each element in a position and inserting it into a vector:
for i=1:length(A)
for j=1:N (size of rows)
ps1(i,j)=[A(i,j) 0]*[1 0]';
end
end
there is any way to do this without cycles?
i need the value in every position and that value is putted into a vector, then i make the scalar product with [1 0].
Tnx to all for the reply!

Matt J

Matt J (view profile)

on 13 Sep 2019
But ps1(i,j)=[A(i,j) 0]*[1 0]'; is the same as ps1(i,j)=A(i,j). Example,
>> [3,0]*[1,0]'
ans =
3
The whole loop is therefore equivalent to the trivial single command,
ps1=A;