フィルターのクリア

Produce the same result but without using a for-loop.

3 ビュー (過去 30 日間)
laith awwad
laith awwad 2021 年 4 月 6 日
編集済み: Walter Roberson 2021 年 4 月 6 日
% Produce the same result but without using a for-loop.
% Increment
dx = 35/300;
% Independent variable
x = -5:dx:30; % x = linspace(-5,30,300)
for n = 1:length(x)
if x(n) >= 9
y(n) = 15*sqrt(4*x(n)) + 10;
elseif (x(n) >= 0) && (x(n) <= 9)
y(n) = 10*x(n) + 10;
else
y(n) = 10;
end
end
plot(x,y), xlabel('x'), ylabel('y'), grid on
  1 件のコメント
Rik
Rik 2021 年 4 月 6 日
This time I edited your question for you. Next time, please use the tools explained on this page to make your question more readable.

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

回答 (2 件)

Cris LaPierre
Cris LaPierre 2021 年 4 月 6 日
編集済み: Cris LaPierre 2021 年 4 月 6 日
This is a piecewise function. Perhaps the easiest way to do this is using the piecewise function.
If your assignment doesn't allow that, then create 3 vectors, one for each equation, and solve each for all values of x. Then multiply each by a logical array created from x and the corresponding conditional statement(s). Finally, add all three vectors together.
See Ch 12 of MATLAB Onramp if you need help creating the logical array, and Ch 6 if you need help on elementwise multiplication.
  8 件のコメント
Cris LaPierre
Cris LaPierre 2021 年 4 月 6 日
編集済み: Cris LaPierre 2021 年 4 月 6 日
You have two competing conditions in your second case.
  • 0>=x means x less than or equal to 0.
  • x>=9 is the same as your condition for your first condition and means x greater than or equal to 9.
Can you see how the two conditions cannot be met? Think through how to define your ranges.
laith awwad
laith awwad 2021 年 4 月 6 日
it worked you helped me alot thank you soooo much

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


Walter Roberson
Walter Roberson 2021 年 4 月 6 日
syms y(x)
y(x) = piecewise(x>=9, 15*sqrt(4*x)+10, 0>=x=<9, 10*x+10,10)
^^
MATLAB does not have an =< operator; it has a <= operator.
dx = 35/300;
xvalue = -5:dx:30;
fplot(y)
fplot() by default plots from -5 to +5 . Your assignment to xvalue does not affect that. To have it plot over a different interval, the interval would have to be passed as the second parameter, such as
fplot(y, [-5, 30])
Only the endpoints of the interval would be passed.
fplot() always chooses its own points to plot at. If you only want to plot at particular points, you should not use fplot(); you should use plot() instead.
plot() does not accept formulas, so you would need to
plot(xvalue, y(xvalue))
  1 件のコメント
laith awwad
laith awwad 2021 年 4 月 6 日
it worked thank you so much

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

カテゴリ

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