Info

Cette question est clôturée. Rouvrir pour modifier ou répondre.

How to operate on different rows of the same matrix?

12 vues (au cours des 30 derniers jours)
Marco Boesso
Marco Boesso le 28 Oct 2020
Clôturé : MATLAB Answer Bot le 20 Août 2021
Good morning folks, I need your help to figure out a possible solution for my issue. I can't find a way out.
Let's consider this matrix A:
1 4 -2 0
2 0 -2 0
3 0 -3 0
4 2 -2 0
I want to operate on the rows, in order to do some operations. Let's stick, for easiness' sake, to this problem: I want to pair the first elements of two different rows. I.e.:
[1, 2]; [1, 3]; [1, 4]; [2, 3]; [2, 4]; [3, 4]
so, it's the first row with the second, the first with the third, the first with the fourth, the second with the third, the second with the fourth, so on...
I had the job done with nested for cycles, but... my supervisor wants me to use a different solution. I need help as I can't find a way out but I desperately need this!
  8 commentaires
Marco Boesso
Marco Boesso le 28 Oct 2020
Went for some trials, I figured out how to handle those strings by my own. Looks like I've got to compare each string manually.
Nevertheless, thanks for your help: it's been vital to allow me to go on with my work. Brilliant mate :D
Rik
Rik le 28 Oct 2020
You can fairly easily convert what you have to either style in my comment. I don't see why you would need to do manual work, that doesn't sound like the Matlab way.

Réponses (1)

Sudhakar Shinde
Sudhakar Shinde le 28 Oct 2020
Try this:
[A(1,1) A(2,1)] %[1 2]
[A(1,1) A(3,1)] %[1 3]
[A(1,1) A(4,1)] %[1 4]
[A(2,1) A(3,1)] %[2 3]
[A(2,1) A(4,1)] %[2 4]
[A(3,1) A(4,1)] %[3 4]
  5 commentaires
Sudhakar Shinde
Sudhakar Shinde le 28 Oct 2020
@rik, Thanks for your suggestion and it will surely helpful for OP. If A is extended, vectorized answer will surely helpful. Need to keep in mind that using a loops will increase computational complexity.
to store the result in cell :
B={};
for ind1=1:(size(A,1)-1)
for ind2=(ind1+1):size(A,1)
B{end+1}=A([ind1 ind2],1);
end
end
Rik
Rik le 28 Oct 2020
Or you don't use a nested loop with a dynamically exanding variable:
B=nchoosek(1:size(A,1),2);
B=mat2cell(B,ones(size(B,1),1),2);

Cette question est clôturée.

Community Treasure Hunt

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

Start Hunting!

Translated by