# If statement dictating acceptable range is not functioning properly, why?

1 ビュー (過去 30 日間)
Aly Osman 2022 年 6 月 10 日
コメント済み: Aly Osman 2022 年 6 月 10 日
I'm working on a project to where I have to find pairs of values that provide the same output when inputted into an equation. I want only combinations that provide an output within a defined range, so for example, say I want all the possible combinations of values that sum to 6 +/- 0.5 so combinations that would sum to 5.5, 6 or 6.5 are all acceptable, however if there's a combination that sums to 7, I want that to be excluded. Getting a code working that at least satisfies the process of finding combinations is something I already have, thanks to the gracious people on here in this thread , so my issue is setting the condtions that I just spoke of to exclude certain combinations.
In my test code however, it doesn't seem like this is being done for some reason. I want all combinations that give me a value that is between lim1 and lim2, however when plugging the combinations that are output back into the original equation to find davg, I find that it has cominations that output values way beyond the conditions that I set (for example davg(1)= 89.3, when I set a condition for no combinations that would result in davg being greater than 59.663). So is something off with my if statement, or am I off base here completely? I would appreciate some insight regarding this.
lim1=(davg_initial-0.5);
lim2= (davg_initial+0.5);
a = [0:0.5:35];
n = length(a);
b = [];
for i = 1:n
value1 = a(i);
for j = 1:n
value2 = a(j);
if davg<=lim2 && davg>=lim1...
&& value2<value1
b = [b,[value1;value2]];
end
end
end
b'
##### 2 件のコメント表示非表示 1 件の古いコメント
Aly Osman 2022 年 6 月 10 日
Good suggestion! I've used cosd, sind in the past, but for some reason my mind blanked on using them here since originally I was doing everything in radians and to understand what each number meant I was just doing rad2deg, regardless, I'll switch to this now, much cleaner and shorter! Thank you!

サインインしてコメントする。

### 採用された回答

Geoff Hayes 2022 年 6 月 10 日
@Aly Osman - what are the units for a and so the units for b? In your looping code, that includes the if statement, you do
for i = 1:n
value1 = a(i);
for j = 1:n
value2 = a(j);
if davg<=lim2 && davg>=lim1...
&& value2<value1
b = [b,[value1;value2]];
end
end
end
where you take pairs of values from a and pass them into the equation
If the criteria is met, then you save value1 and value2 to the b array. Once the outer loop completes, then you seem to do a check or validation of the data
where you convert each value in b from degrees to radians, and then you pass them into the (almost identical) equation
So why is there a conversion from degress to radians of the data in b? Shouldn't you have done that also when extracting value1 and value2 from a?
##### 1 件のコメント表示非表示 なし
Aly Osman 2022 年 6 月 10 日
Wow, I'm a dummy it seems. You are right, value 1 and value 2 are in radians instead of being in degrees, which is what messed everything up. This fixed it and now the numbers are actually within the range I designated in the if statement. Thank you!

サインインしてコメントする。

### カテゴリ

Find more on Resizing and Reshaping Matrices in Help Center and File Exchange

R2022a

### Community Treasure Hunt

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

Start Hunting!

Translated by