Matlab User-defined function problem

  • Thread starter Thread starter BodenD
  • Start date Start date
  • Tags Tags
    Function Matlab
AI Thread Summary
A user-defined function for calculating GPA in MATLAB encountered an error stating that "function definitions are not permitted in this context," specifically related to nested functions within control statements. To resolve this, it is advised to create functions as separate .m files, ensuring that one file contains the function and another is used to call it. Additionally, it is recommended to avoid redefining input variables within the function and to use intermediate variables instead. The user successfully resolved the function issue but opted to use numerical grades instead of letter grades due to complications with string handling. The discussion highlights common pitfalls in MATLAB function creation and offers practical solutions.
BodenD
Messages
2
Reaction score
0

Homework Statement


Write a user-defined function that calculates grade point average (GPA) on a scale of 0 to 4 ...
https://41.media.tumblr.com/4f5e8ee38181d7c584c234138f632714/tumblr_nmnhq9p8jo1usetlso1_1280.png

The Attempt at a Solution


tumblr_nmnhq9p8jo1usetlso2_1280.png


I'm getting the error that "function definitions are not permitted in this context"
And details says "A nested function cannot be defined in a control statement"

I don't really understand how to use functions. What can I do to fix this?

Oh and I took out that extra "end"
 
Last edited by a moderator:
Physics news on Phys.org
2 things.

1. in MATLAB you need to make functions as separate m files. so you will have one file for your function, then one file where you use it.

2. you generally don't want to write to an input to the function. you are redefining g as you use it. You might want to use an intermediate variable to write to

try g_letter and g_number
 
Thank y'all! I figured out how to make the function work, but not with the Letter-to-number conversion I was trying to use. It didn't like the size of g when it was made of stings. So I just wrote g with the numbers instead of letter grades. Good enough!

https://41.media.tumblr.com/b768db26c487e07c370262dc345cb3e2/tumblr_nmrwnl6bpg1usetlso2_250.png
https://41.media.tumblr.com/ce387187354b1499a74fa028c76f50a4/tumblr_nmrwnl6bpg1usetlso1_1280.png
 
Last edited by a moderator:
Back
Top