error when calling a function inside of another function

I'm very new to matlab function. so sorry if i asked a stupid question. i got an error saying "The expression to the left of the equals sign is not a valid target for an assignment." for the line as:
answer = function2(x,y,z);
in function1. when I run another .m file which call this function1 and this function1 calls function2 like the above. I've tested the function2 at the command line with no error. which returns a (1,3) vector. and in function1, i didn't define the variable "answer". I tried to modify the function2 to make it return 3 output variable with each being a scalar and even reduce the function2 output to only one scalar output, it still gave the same error. could anybody give me some help? I really appreciate that.

댓글 수: 1

Please show us the exact code line. There might be something subtle about what you used.

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

 채택된 답변

Oleg Komarov
Oleg Komarov 2011년 2월 6일

0 개 추천

In orbit, line 16, you open a { and close } before the end, last line. Remove them.
Then variables r0 and a are not defined anywhere in the function.
Oleg

추가 답변 (2개)

newbie
newbie 2011년 2월 6일
ok, here is the function1 and the e_field() is the function2,thanks
function [pos_arr]=orbit(qom_in, pos, vel, dt)
x(1:3) = pos(1);
y(1:3) = pos(2);
z(1:3) = pos(3);
vx(1:3) = vel(1);
vy(1:3) = vel(2);
vz(1:3) = vel(3);
pos_arr = [];
ii = 1;
rad = sqrt(x(1)^2 + y(1)^2);
rho = sqrt((rad - r0)^2 + z(1)^2);
while((rad<(r0+a))&&(rad>(r0-a))&&(rho<a)){
e = e_field(x(1), y(1), z(1));
b = b_field(x(1), y(1), z(1));
ax(2:4) = ax(1:3);
ay(2:4) = ay(1:3);
az(2:4) = az(1:3);
vx(2:4) = vx(1:3);
vy(2:4) = vy(1:3);
vz(2:4) = vz(1:3);
x(2:4) = x(1:3);
y(2:4) = y(1:3);
z(2:4) = z(1:3);
ax(1) = qom_in*(e(1) + vy(1)*b(3) - vz(1)*b(2));
ay(1) = qom_in*(e(2) + vz(1)*b(1) - vx(1)*b(3));
az(1) = qom_in*(e(3) + vx(1)*b(2) - vy(1)*b(1));
vx(1) = vx(2) + (ax(1) + ax(2))*dt/2;
vy(1) = vy(2) + (ay(1) + ay(2))*dt/2;
vz(1) = vz(2) + (az(1) + az(2))*dt/2;
x(1) = x(2) + (vx(1) + vx(2))*dt/2;
y(1) = y(2) + (vy(1) + vy(2))*dt/2;
z(1) = z(2) + (vz(1) + vz(2))*dt/2;
ii =ii+1;
rad = sqrt(x(1)^2 + y(1)^2);
rho = sqrt((rad - r0)^2 + z(1)^2);
pos_arr = [pos_arr; [x(1), y(1), z(1)]];
}end

카테고리

도움말 센터File Exchange에서 Interactive Control and Callbacks에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by