当我在EE攻读本科学位时,MATLAB要求每个函数都在自己的文件中定义,即使它是一个单行程序.
我现在正在攻读研究生学位,我必须在MATLAB中编写一个项目.这仍然是新版MATLAB的要求吗?
如果可以在文件中放置多个函数,是否有任何限制?例如,文件中的所有函数都可以从文件外部访问,还是只能从与文件同名的函数中访问?
注意:我使用的是MATLAB版本R2007b.
我想为该方程式编写代码:T2(i)=T1(i)+2*[T1(i-1)+T1(i+1)]
syms T1 T2
function [T2] = stat(T1)
for i=1:3
T2(i)=T1(i)*2+[T1(i-1,)+T1(i+1,)]*2
end
Run Code Online (Sandbox Code Playgroud)
我想编写代码T2(111)=T1(111)+2*[T1(011)+T(211)],循环继续进行。但是matlab给出了这个错误
“在提示或脚本中不允许使用功能定义”
我怎么解决这个问题?
我可以在同一个文件中使用MATLAB脚本代码和功能代码吗?
%% SAVED IN FILE myfunc.m (otherwise fail)
function [out1] = myfunc( x )
out1 = sqrt( 1 + (cos(x))^2 );
end
%%
%OTHER CRAP
y = 1:10
% use myfunc
Run Code Online (Sandbox Code Playgroud)
即使使用end关键字,它似乎也不起作用.这种类型的东西是允许的还是我总是需要在自己正确命名的文件中使用EACH功能?
我确信几年前我看到了在同一个文件中使用这些函数的函数和代码.
可能重复: 如何更正"在提示符或脚本中不允许使用函数定义"
毫不奇怪,如果我尝试在MATLAB中运行以下M脚本,我会收到错误
??? 错误:文件:kalmanmle.m行:47列:1在此上下文中不允许使用函数定义.
我不确定这是否可以像我一样运行.或者,我将如何在MATLAB命令行上运行它?
clear all;
% State space reprsentation to be forcasted by kalman filter
% zhi(t+1) = F*zhi(t) + v(t+1) --> unbobserved varaibles
% v~N(0,Q)
% y(t) = A'*x(t) + H'*zhi(t) + w(t)
% w~N(0,R)
global y;
global x;
global Hvec;
%%---- Enter Input parameters
F = 0.9;
Q = 0.1;
A = 2;
n = 100;
Hvec = zeros(n,1); %index returns process
indexshock = normal_rnd(0,0.1,n,1);
Hvec(1) = 0;
for i = 2:n,
Hvec(i) = 0.95*Hvec(i-1) …Run Code Online (Sandbox Code Playgroud) 我可以在脚本内部使用快速和简短的帮助器本地函数吗?
目前我有"FUNCTION关键字在这里使用无效"的消息.
为什么?
我做了一些查找,找到了一些答案,但没有一个明确或确定.
我只是想知道,是否可以MatLab在scripts(m-file)中本地定义函数?
因为有时我只想要一个我不会用于任何其他脚本的小功能,所以我不想为它创建一个新文件.为了便于处理它们.
由于不可能在同一个文件中有脚本和函数定义,我想在脚本中回显我要附加的函数,这样我得到一个带有函数代码的脚本,然后使用这个函数.
例如 -
func1.m
function [result] = func1(x)
result=sqrt(x) ;
end
Run Code Online (Sandbox Code Playgroud)
script1.m
echo(func1.m) ;
display(func1(9))
Run Code Online (Sandbox Code Playgroud)
script1.m的欲望输出
function [result] = func1(x)
result=sqrt(x) ;
end
display(func1(9))
3
Run Code Online (Sandbox Code Playgroud)
你有什么想法吗?