フィルターのクリア

If Loop for specific condition

6 ビュー (過去 30 日間)
Fereizqo Sulaiman
Fereizqo Sulaiman 2018 年 2 月 27 日
回答済み: Esha Almas 2020 年 3 月 4 日
Hello, i've written the following script in MATLAB:
i = 1:0.5:50;
for t = [-5:0.5:50]
if t<10
v = 11.*t.^2 - 5.*t;
elseif t<20.5 && t>10
v = 1100-5.*t;
elseif t<30.5 && t>20
v = 50.*t + 2.*(t-20).^2;
elseif t>30
v = 1520.*exp(-0.2.*(t-30));
else
v = 0;
end
end
fprintf('value of v: %d\n', v);
I want to get value of v in every t condition First condition, t < 10 Second condition, 10<t<20 Third condition, 20<t<30 Forth condition, t>30 and if none of them, the value of v is 0 Thanks for your help

採用された回答

KL
KL 2018 年 2 月 27 日
is it a homework? should you really use for loop and if-else statements?
I suppose yes. In that case, you need to store your calculated v after every iteraton. For example,
t = -5:0.5:50; %here you define t
and you may want to store v for every t, so pre-allocate v for the same size now,
v = zeros(size(t));
now, v is full of zeros. Fill it up inside your loop. It's always wise to use a indexing variable as for-loop counter,
for indx=1:numel(t)
if(t(indx) <= condition)
v(indx) = some equation
elseif ...
...
end
end
get the idea?
  1 件のコメント
Fereizqo Sulaiman
Fereizqo Sulaiman 2018 年 3 月 7 日
No, i am trying to learn matlab by myself from a book then get stuck with this exercise. I understand, thanks for your help

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

その他の回答 (2 件)

Andrei Bobrov
Andrei Bobrov 2018 年 2 月 27 日
t = -5:0.5:50;
tt = [-inf,10,20,30,inf];
f = {@(t)11*t.^2 - 5*t;
@(t)1100-5*t;
@(t)50*t + 2*(t-20).^2;
@(t)1520.*exp(-.2*(t-30))};
ii = discretize(t,tt);
v = arrayfun(@(x,y)x{:}(y),f(ii),t(:));
  1 件のコメント
Jan
Jan 2018 年 3 月 7 日
編集済み: Jan 2018 年 3 月 7 日
I have to think twice, how I can express "@(x,y)x{:}(y)" in words. :-)

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


Esha Almas
Esha Almas 2020 年 3 月 4 日
If else by while loop

カテゴリ

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