MATLAB Answers

need help to plot function contain condition 'equal '

7 ビュー (過去 30 日間)
hasan s
hasan s 2021 年 8 月 30 日
コメント済み: hasan s 2021 年 8 月 31 日
Hello every one,
I need to plot this function of pentagonal, which is
and the figure must as:
I try it but the output of figure not as the Required drawing ,
if any prof. can help me thanks alot,
thank you

採用された回答

DGM
DGM 2021 年 8 月 30 日
編集済み: DGM 2021 年 8 月 31 日
There are some problems here. Let's start with the solution. I adjusted the parameters so it looks more like the picture, but your parameters should work too.
a1 = 1;
a2 = 2;
a3 = 4;
a4 = 5;
a5 = 6;
s = 0.75;
r = 0.5;
t = 1;
x = 0:0.1:10;
part0 = 0 .* ( x < a1 | x > a5 );
part1 = r*(x-a1)/(a2-a1) .* (x >= a1 & x < a2);
part2 = (r + (t-r)*(x-a2)/(a3-a2)) .* (x >= a2 & x < a3);
%part3 = t .* x==a3; % this point is redundant
part4 = (s + (t-s)*(a4-x)/(a4-a3)) .* (x >= a3 & x < a4);
part5 = s*(a5-x)/(a5-a4) .* (x >= a4 & x <= a5);
G = part0 + part1 + part2 + part4 + part5;
plot(x, G, 'r')
set(gca,'xtick',[0 a1 a2 a3 a4 a5 max(x)], ...
'xticklabel',{'0','a1','a2','a3','a4','a5',num2str(max(x))})
set(gca,'ytick',[0 r s t],'yticklabel',{'0','r','s','t'})
grid on
If you choose to compose the function by masking and adding, then you need to be sure that your masks don't overlap at the endpoints. This includes the single point called part3. I omitted that, since it's redundant. If you choose to add it back in, you'll have to exclude that point from the mask used by part4.
Second, and probably most importantly, the given piecewise function described by the text doesn't match the image. Don't let yourself get run in circles thinking the textbook is always right.
Third, since you smartly chose to assign the peak value to an extra parameter t, you needed to use t in the expressions instead of 1.
  3 件のコメント
hasan s
hasan s 2021 年 8 月 31 日
Thank you very very much prof. DGM

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

その他の回答 (1 件)

Walter Roberson
Walter Roberson 2021 年 8 月 30 日
piecewise() if you have the Symbolic Toolbox.
If you do not have the Symbolic Toolbox, then use logical indexing, such as
mask = a4 <= x & x <= a5
y(mask) = s * (a5 - x(mask) )./(a5 - a4);
Caution: all of your middle endpoints occur multiple times. The value for x == a3 is defined three different ways. The first and second way are not compatible. for x == a3, then (x - a2)/(a3-a2) would be (a3-a2)/(a3-a2) = 1, and that would be multiplied by (1-r) would would give (1-r) . Then 1 minus that is 1 - (1-r) which would be r, which is not the same as the third case where the output has to be 1 when x == a3.
Look as well at the second case when x == a2 . (x-a2)/(a3-a2) when x == a2 would be (a2-a2)/(a3-a2) which would be 0. That would be multiplied by (1-r) giving 0. That would be subtracted from 1, giving 1. That is incompatible with the first expression and incompatible with the diagram, both of which require that the output be r at x == a2.
  2 件のコメント
hasan s
hasan s 2021 年 8 月 30 日
pardon prof. what you mean "Symbolic Toolbox "

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

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by