How do I loop through incrementally changing values

1 回表示 (過去 30 日間)
Highwayman2
Highwayman2 2015 年 5 月 5 日
回答済み: David Sanchez 2015 年 5 月 5 日
I have two given formulae,
a = 0.1+3*10^-3 * alpha^2
and
b= 0.2+0.1*alpha - (3*10^-3)(alpha^2)
I want to run through values of alpha that increase in small increments (0.5) from 1 to 20.
I need the results from those to then run through the formula c = tan^-1(a/b) which needs to be plotted for all the different inputs.

採用された回答

Walter Roberson
Walter Roberson 2015 年 5 月 5 日
alphavals = 1:0.5:20;
for K = 1 : length(alphavals);
alpha = alphavals(K);
a = ...
b = ...
c(K) = atan2(b,a);
end
plot(alphavals, c);
Note that I adjusted to use the four-quadrant inverse tan; the formula as you wrote it would be only the two-quadrant inverse tan. You could create that if you really wanted:
c(K) = atan(a/b);
The code here shows what you asked, looping through changing the value of alpha. But it isn't nearly as efficient as it could be. Instead, you can use
alpha = 1:0.5:20;
temp = 3E-3 .* alpha.^2; %notice the .^ instead of plain ^
a = 0.1 + temp;
b = 0.2 + 0.1 .* alpha - temp;
c = atan2(b, a);
plot(alpha, c);

その他の回答 (2 件)

Nobel Mondal
Nobel Mondal 2015 年 5 月 5 日
You could utilize the colon and element-wise operators, instead of looping.
For example:
alpha = 1:0.5:20;
a = 0.1 + 3* 10^-3 * alpha.^2

David Sanchez
David Sanchez 2015 年 5 月 5 日
alpha = 1:0.5:20;
a = 0.1+3*10^-3 * alpha.^2;
b = 0.2+0.1*alpha - (3*10^-3)*(alpha.^2);
c = 1./tan(-a./b); % I don't know what is your equation
plot3(a,b,c)

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by