Error Matrix dimensions must agree

조회 수: 1 (최근 30일)
jack carter
jack carter 2017년 7월 5일
댓글: jack carter 2017년 7월 6일
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

채택된 답변

Star Strider
Star Strider 2017년 7월 5일
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
jack carter
jack carter 2017년 7월 5일
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 2017년 7월 5일
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.

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

추가 답변 (1개)

KSSV
KSSV 2017년 7월 5일
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);

카테고리

Help CenterFile Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by