MATLAB Online does not run script properly

I ran the following script (which I named draft.m) through MATLAB Online:
clear;
fun = @(x, b) (b-7)*(b+5)*x.^2-2*x+3;
brange = -8:0.1:10;
fmin = [];
for b = brange
end
and got the following error message:
>> draft
Error: File: draft.m Line: 6 Column: 1
At least one END is missing. The statement beginning here does not have a matching end.
But if I remove the line
fmin = [];
then it works. Did I miss something? I suppose defining an empty array shouldn't fail the for loop, should it? Thank you very much in advance for any comments that you may have.

댓글 수: 3

Martin
Martin 2024년 4월 10일
이동: Dyuman Joshi 2024년 4월 10일
How to convert a matrix from real numbers into a Modulo, for example, how would I convert the following matrix into modulo 7?
M = [7 3 7; 1 0 9; 7 2 8]
@Martin, Have you tried searching on the internet or on this forum for the same?
This is unrelated to this question. Please ask this in a new question.

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

답변 (1개)

Cris LaPierre
Cris LaPierre 2022년 5월 9일
Code runs without error for me. I can also run it here without error. Perhaps try again? If it happens again, perhaps there are more details you can share about what you are doing?
clear;
fun = @(x, b) (b-7)*(b+5)*x.^2-2*x+3;
brange = -8:0.1:10;
fmin = [];
for b = brange
end
b
b = 10

댓글 수: 8

The following is the complete code:
fun = @(x,b) (b - 7)*(b + 5)*x.^2 - 2*x + 3;
brange = -8:.01:10;
fmin = [];
for b = brange
f = @(x) fun(x, b);
[crit, fval] = fminbnd(f, -6, 6);
fmin(end + 1) = fval;
end
plot(brange, fmin);
xlabel('b'); ylabel('m(b)'); title('The graph of m(b)');
I am plotting the minima of the parametrized functions (given by fun and f in the code) versus b. I am pretty sure it should work -- I ran the code before and I also tried it on GNU Octave just now. Here's the plot from the latter:
I am really not sure what's happening with my MATLAB Online and hence I posted the question.
Any clues?
Thanks.
By the way, if it helps, I am using MATLAB Online through Firefox 100.0 (64-bit) on macOS Big Sur.
Thanks again.
Torsten
Torsten 2022년 5월 9일
And the error message is the one you posted above:
Error: File: draft.m Line: 6 Column: 1
At least one END is missing. The statement beginning here does not have a matching end.
?
Yes, in both cases -- with the incomplete and the complete codes. And here's the content of my MATLAB drive:
>> ls
calc_roots.m draft.m factorial2.m funxy.m matlab_logo.jpg prob2.m square.m
dist2.m Euler fig3_4_2.png g.m my_dfact.m Published stats_2.m
draft.asv Exam friendship_paradox.mlx Martinez prob1.m Shared test_dist2.m
whch I don't see any conflicts with the script -- or maybe I missed something?
Thank you very much.
Torsten
Torsten 2022년 5월 9일
편집: Torsten 2022년 5월 9일
Just a guess:
What if you use
fmin = [fmin,fval];
instead of
fmin(end+1) = fval;
or even better:
fmin = zeros(numel(brange),1)
for b = brange
f = @(x) fun(x, b);
[crit, fval] = fminbnd(f, -6, 6);
fmin(b) = fval;
end
It ended up with the same error message. In fact, in the incomplete version of the code, neither of the statements is within the loop and code still failed to work. And, I assume
fmin(end+1) = fval;
is syntatically correct?
Confusing indeed. Once in a while having fun with bizzarre behavior of our machines. Hehe.
The full code runs fine for me.
This helps! Thanks a lot!
Take care.

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

카테고리

도움말 센터File Exchange에서 MATLAB에 대해 자세히 알아보기

제품

릴리스

R2022a

질문:

2022년 5월 9일

댓글:

2024년 4월 10일

Community Treasure Hunt

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

Start Hunting!

Translated by