Nested for loops to compile all possible combinations of two vectors

6 Ansichten (letzte 30 Tage)
I have two vectors and would like to acquire the result of an operation using each combination of the two arrays. The result should look something like this:
1 2 2
1 4 4
1 6 6
2 2 4
2 4 8
... etc.
if vector1 = [1 2 3 ...] and vector2 = [2 4 6 .....].
Here is my attempt:
count = 0;
for i = 1:1:I
for j = 1:1:J
%
alpha = 0.038*i - 8;
thresh = 0.00189*j + 0.01;
% perform some operation to acquire chi
chi = alpha * thresh
% save the chi into a matrix in the order of acquisition
count=count+1;
chi(:,count) = chi % this seems to give the correct 1x(I*J) array
% save all 3 columns into array for the corresponding chi. this is not working. Nearly all entries are 0.
C=zeros(I*J,3);
C(1,count) = alpha;
C(2,count) = threshold;
C(3,count) = chi;
end
count = count + J;
end

Akzeptierte Antwort

Bruno Luong
Bruno Luong am 14 Aug. 2023
vector1 = [1 2 3 ];
vector2 = [2 4 6 ];
[V1, V2] = meshgrid(vector1, vector2);
A = [V1(:), V2(:), V1(:).*V2(:)]
A = 9×3
1 2 2 1 4 4 1 6 6 2 2 4 2 4 8 2 6 12 3 2 6 3 4 12 3 6 18

Weitere Antworten (1)

Steven Lord
Steven Lord am 14 Aug. 2023
If upgrading to release R2023a or later were an option you could use the combinations function.
vector1 = [1 2 3 ];
vector2 = [2 4 6 ];
results = combinations(vector1, vector2)
results = 9×2 table
vector1 vector2 _______ _______ 1 2 1 4 1 6 2 2 2 4 2 6 3 2 3 4 3 6

Kategorien

Mehr zu Startup and Shutdown finden Sie in Help Center und File Exchange

Produkte


Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by