For my soil mechanics lab I need to plot three Mohr Circle on the same axes. I need help on making this function take any input(s3,s1) (instead of assigning a value to s3 and s1 in the script) and returning the radius of the circle.
function [r,h]= geotech_mohrcirc(s3,s1)
clear all
close all
clc
s3= 50;
s1= 103.169;
x=linspace(s3,s1,1000);
r=(s1-s3)/2;
h=(s1+s3)/2;
y=abs(sqrt(r^2-(x-h).^2));
plot (x,y)
axis equal
grid on
axis([0,s1+r,0,1.25*r])
xlabel('Normal stress \sigma_n (kPa)')
ylabel ('Shear stress \tau (kPa)')
end

 채택된 답변

Walter Roberson
Walter Roberson 2018년 4월 14일

0 개 추천

Get rid of the "clear all". Once you do that then you can remove the assignments from the script. The "clear all" is erasing the parameters that are passed in.
I also recommend getting rid of the "close all" and "clc".

댓글 수: 2

Rik
Rik 2018년 4월 14일
The inclusion of clear all,close all,clc is a prime example of cargo cult programming. If you don't actually need to clear everything, don't use clear all. If you want to clear variables in a script, use clearvars instead at the very least. M-lint also generates a warning for this. You should really try to resolve every warning. You can suppress warnings you decide not to resolve by including %#ok after that line. That way, you can easily keep track of any new warnings.
Milad Ahmed
Milad Ahmed 2018년 4월 14일
편집: Milad Ahmed 2018년 4월 14일
Thank you !

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

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Agriculture에 대해 자세히 알아보기

질문:

2018년 4월 14일

편집:

2018년 4월 14일

Community Treasure Hunt

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

Start Hunting!

Translated by