Undefined function or variable 'a'.
2 views (last 30 days)
Show older comments
My current problem refers to the below script and function.
clear;
for x=100:145
assfunct1(x);
fprintf('x: %d, a: %d, b: %d, c: %d\n', x, a, b, c);
end;
&
function [a,b,c] = assfunct1(x)
if x<0 || fix(x) ~=x;
disp('error, input is not a non negative integer')
return
end
for a=1:x
b=sqrt(5*a^3);
c=sqrt((a+b)^2);
end
[a,b,c]
end
>> Assignment1
ans =
1.0e+03 *
0.1000 2.2361 2.3361
Undefined function or variable 'a'.
Error in Assignment1 (line 4)
fprintf('x: %d, a: %d, b: %d, c: %d\n', x, a, b, c);
Been trying for hours to work where I have erred, ty for any help you can offer.
3 Comments
CS Researcher
on 4 May 2016
I answered this a few days back and as John correctly pointed out you should do this:
clear;
for x=100:145
[a,b,c] = assfunct1(x);
fprintf('x: %d, a: %d, b: %d, c: %d\n', x, a, b, c);
end;
Accepted Answer
John BG
on 3 May 2016
You have to collect the output of your custom function assfunct3() with a variable that then you have to feed in the fprintf.
Since you call assfunct3 but do not collect the result with anything, then fprintf does not really know what variable 'a' is because the 'a' you use in the header of the assfunct3 remains local to that function.
If you find this answer of any help solving your question,
please click on the thumbs-up vote link,
thanks in advance
John
0 Comments
More Answers (1)
Jan
on 3 May 2016
You have to catch the outputs of the function:
for x = 100:145
[a, b, c] = assfunct3(x);
fprintf('x: %d, a: %d, b: %d, c: %d\n', x, a, b, c);
end
Note that the values of b and c are overwritten in each iteration:
for a = 1:x
b = sqrt(5*a^3);
c = sqrt((a+b)^2);
end
[a,b,c]
What is your intention?
0 Comments
See Also
Categories
Find more on Introduction to Installation and Licensing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!