straight line doesn't show in plot

조회 수: 15 (최근 30일)
Povilas Vaitukaitis
Povilas Vaitukaitis 2016년 11월 15일
댓글: dpb 2016년 11월 16일
Horizontal line doesn't appear in the plot for some reason. if I add 'x' or different line marker in the plot command it appears in the plot.
Scipt:
%%Stress distribution in the thick-walled and thin-walled cylinder along the cylinder wall
%%Constants and radial distance through the wall
Pi=13.1; % N/mm^2 internal pressure
d0=68; % mm outer radius
N=100; % number of points through the wall
t=6; % mm wall thickness
a=(d0-2*t)/2; % mm internal radius
b=d0/2; % mm external radius
k=b./a; % constant
r=linspace(a,a+t,N); % mm radial distance from the centre
p=(r-a)/t; % parametric distance
%%thin-walled cylinder
thinsigma1=Pi*a./t; % 1st principal stress
thinsigma2=Pi*a./(2*t); % 2nd principal stress
thinsigma3=0; % 3rd principal stress
%%thick-walled cylinder
thicksigma1=(Pi/((k^2)-1))*(1+(b^2)./(r.^2)); % 1st principal stress
thicksigma2=Pi/((k^2)-1); % 2nd principal stress
thicksigma3=(Pi/((k^2)-1))*(1-(b^2)./(r.^2)); % 3rd principal stress
%%plot the results for thin-walled cylinder
plot(p,thinsigma1,'kx')
title('Thin-walled principal stress versus parametric distance')
legend('1st principal stress')
xlabel('Parametric distance')
ylabel('1st principal stress, N/mm^2')
figure()
plot(p,thinsigma2,'kx')
title('Thin-walled principal stress versus parametric distance')
legend('2nd principal stress')
xlabel('Parametric distance')
ylabel('2nd principal stress, N/mm^2')
figure()
plot(p,thinsigma3,'kx')
title('Thin-walled principal stress versus parametric distance')
legend('3rd principal stress')
xlabel('Parametric distance')
ylabel('3rd principal stress, N/mm^2')
%%plot results for thick-walled cylinder
figure()
plot(p,thicksigma1)
title('Thick-walled principal stress versus parametric distance')
legend('1st principal stress')
xlabel('Parametric distance')
ylabel('1st principal stress, N/mm^2')
figure()
plot(p,thicksigma2)
title('Thick-walled principal stress versus parametric distance')
legend('2nd principal stress')
xlabel('Parametric distance')
ylabel('2nd principal stress, N/mm^2')
figure()
plot(p,thicksigma3)
title('Thick-walled principal stress versus parametric distance')
legend('3rd principal stress')
xlabel('Parametric distance')
ylabel('3rd principal stress, N/mm^2')
line doesn't appear in the first 3 figures (in this script I put 'kx' so it appears) and in figure 5.
anyone knows why it is so?

채택된 답변

dpb
dpb 2016년 11월 15일
편집: dpb 2016년 11월 16일
Second posting today with same issue...serendipity strikes again!!! :)
>> whos p thinsig*
Name Size Bytes Class Attributes
p 1x100 800 double
thinsigma1 1x1 8 double
thinsigma2 1x1 8 double
thinsigma3 1x1 8 double
>>
All the y values are single points--when given a vector of x values but a single y, plot draws a line for each x value consisting of the single point. Hence, you get a dotted line by default or the markers when using the 'x' marker type.
If it really is intended to be a horizontal line, no point in filling a full array, but do have to fix up the plotting command somehow...
plot(p,repmat(thinsigma1,size(p)),'k')
is effective but a hammer.
plot(p([1 end]),repmat(thinsigma1,1,2),'k')
is more efficient in memory.
  댓글 수: 2
Povilas Vaitukaitis
Povilas Vaitukaitis 2016년 11월 15일
thank you!
dpb
dpb 2016년 11월 16일
No problem...was, however, curious event of two unrelated cases of the same symptom showed up on same day and I don't recall it ever in the time since I started watching the forum...
BTW, if have Stat and Machine Learning TB, there's a prepackaged function refline to add a baseline included there that's some "syntactic sugar" to accomplish the deed. Seems like a useful additive method to the plot function instead of squirreling away in a toolbox, however. But, of course, it's a pretty trivial addition.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 3-D Function Plots에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by