Error Matrix dimensions must agree

6 Ansichten (letzte 30 Tage)
jack carter
jack carter am 5 Jul. 2017
Kommentiert: jack carter am 6 Jul. 2017
I am getting "Matrix dimensions must agree" error while running the following codings in MatLab. From the first two equations I am getting error because of exp(f.*phi) part. If I remove this part, the code works fine. But I need to add this in both equations. In the last equation I am getting error due to the factor_c part. Could someone help me correcting the mistakes? Thanks
function myfunction
n=0;Ef=40*10^6;df=0.014;rou=3*10^6;S=0:600;f=0.5;phi=0:0.01:pi/2;Le=2;Vf=0.02;
P_friction=(pi/2)*sqrt((1+n)*Ef*df^3*rou*S).*exp(f.*phi);
Pslip=pi*rou*Le*df*(1-S/Le)*exp(f.phi);
factor_a=(4*Vf/(pi*df^2));
factor_b=Pslip.*P_friction;
factor_c=p_phi*p_z;
sigmab=factor_a.*factor_b.*factor_c;
end

Akzeptierte Antwort

Star Strider
Star Strider am 5 Jul. 2017
First, you need an operator here, I assume multiplication:
Pslip=pi*rou*Le*df*(1-S/Le)*exp(f.*phi);
↑ ← INSERT ‘*’ HERE
What are ‘p_phi’ and ‘p_z’ here:
factor_c=p_phi*p_z;
I do not see where you have defined them, and your function does not have any arguments. A function file will not pick up variables from your workspace as an anonymous function would.
  4 Kommentare
jack carter
jack carter am 5 Jul. 2017
It is working fine with your codings. May I ask in case if we modify the value of p(z) while keeping the rest of the codings same,
z=0:Lf./(2*cos(phi));
p(z)=2*z/Lf;
Star Strider
Star Strider am 5 Jul. 2017
If you want all the vectors to be the same lengths, you will have to define ‘z’ as:
z = bsxfun(@rdivide, [0:Lf]', 2*cos(phi));
p = 2*z/Lf;
This creates a (3x100) matrix for ‘p’.
You cannot use 0 as a subscript. In MATLAB, indexing begins with 1.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

KSSV
KSSV am 5 Jul. 2017
Your S and phi should be arrays with equal dimensions. In your code they are not same. You need to proceed like below.
N = 100 ; % can be changed
n=0;
Ef=40*10^6;
df=0.014;
rou=3*10^6;
S = linspace(0,600,N) ;% S=0:600;
f=0.5;
phi = linspace(0,pi/2,N) ;% phi=0:0.01:pi/2;
Le=2;
Vf=0.02;
P_friction=(pi/2)*sqrt((1+n)*Ef*df^3*rou*S).*exp(f*phi);
Pslip=pi*rou*Le*df*(1-S/Le).*exp(f*phi);

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by