Recording variables that satisfy a condition
1 view (last 30 days)
Show older comments
Typical new matlab user here, so just looking for help and to learn, I know this is probably a simple question.
Basically, I have three variables X, Y, and Z that span from 0 to 1 spaced by 100. I want to record all instances where X + Y + Z = 1. This is what I have so far:
X = linspace(0,1,100);
Y = linspace(0,1,100);
Z = linspace(0,1,100);
poss = zeros(1000,3); %just a space to populate answers
for i = 1:100
for j = 1:100
for k = 1:100
p = X(i)+Y(j)+Z(k);
if p==1
poss(i,1)=X(i);
poss(i,2)=Y(j);
poss(i,3)=Z(k);
end
end
end
end
Am I on the right track? I just want to record the three variables X, Y, and Z in three columns if their sum totals to one. This is part of a more complex problem but I tried to simplify it. Thanks
2 Comments
Accepted Answer
madhan ravi
on 28 Jan 2021
X = linspace(0,1,100);
Y = linspace(0,1,100);
Z = linspace(0,1,100);
[XX, YY, ZZ] = meshgrid(X, Y, Z);
XYZ = XX + YY + ZZ;
Pass(:, 3) = ZZ(XYZ == 1);
Pass(:, 2) = YY(XYZ == 1);
Pass(:, 1) = XX(XYZ == 1);
Pass
0 Comments
More Answers (1)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!