Can You Help Me Fix this Matlab Error in My Code?

  • Thread starter Thread starter bert2002
  • Start date Start date
  • Tags Tags
    Error Matlab
AI Thread Summary
The MATLAB error arises from incorrect syntax, specifically the use of curly brackets {} instead of parentheses () for mathematical operations. Additionally, the division operator should be element-wise, requiring the use of '1./B' instead of '1/B'. The discussion clarifies that the dot operator in MATLAB is essential for distinguishing between array and matrix operations. Understanding these syntax rules is crucial for resolving errors in MATLAB code. Properly adjusting these elements will help fix the code and allow it to run successfully.
bert2002
Messages
16
Reaction score
0

Homework Statement


Hello, i have a MATLAB code that simply lists a bunch of parameters with values and an equation that relates all of them together. I am getting on error that says

Error in ==> randelltest at 17
Ys0=Yl*{(Pm-Pc)*Yc/Yl*(1-Av*Tm/2*Yc/Yl)-Av*Tm*Pm/2}*(1-1/B);

Is there a problem with this syntax somewhere ?

The Attempt at a Solution



Code in full (matlab noob)% ParametersYl=100; % initial lithosphere thickness
Yc=30; % Initial crustal thickness
Pm=3400; % mantle density
Pc=2670; % crustal density
Ps=2670; % basin material density
Av=2.4*10^-5; % volumetric coefficient of thermal expansion
Tm=1300; % mantle temperature at top of asthenosphere
B=(1:0.1:4); % stretching factor

% Equation for fault controlled subsidence

Ys0=Yl*{(Pm-Pc)*Yc/Yl*(1-Av*Tm/2*Yc/Yl)-Av*Tm*Pm/2}*(1-1/B);

Ys1=Ys0/Pm(1-Av*Tm)-Ps;

plot(B,Ys1)
 
Physics news on Phys.org
bert2002 said:
Ys0=Yl*{(Pm-Pc)*Yc/Yl*(1-Av*Tm/2*Yc/Yl)-Av*Tm*Pm/2}*(1-1/B);
The brackets {} have a special meaning related to MATLAB cells, so you should replace them with (). You should also replace '1/B' with '1./B', so you get element-wise, and not matrix, division.

bert2002 said:
Ys1=Ys0/Pm What operator goes here? (1-Av*Tm)-Ps;
 
milesyoung said:
The brackets {} have a special meaning related to MATLAB cells, so you should replace them with (). You should also replace '1/B' with '1./B', so you get element-wise, and not matrix, division.

Thanks for clearing that up, what is the purpose of the "." ? I cleared up the other error you pointed out too.
 
Back
Top