相关疑难解决方法(0)

八度音阶的全局变量

global m = 1;
function p = h()
  m
end
h()
Run Code Online (Sandbox Code Playgroud)

我正在尝试运行此脚本,但是我收到此错误:

'm'在第4栏第3列附近未定义

请问我,我如何使用函数中的变量?

global octave

6
推荐指数
1
解决办法
4302
查看次数

Matlab:真正的全局变量

可能重复:
在MATLAB中声明一个全局变量

目前我的matlab代码在一个没有内部函数的大脚本文件中.我想在我的脚本中声明函数,使我的代码更具可读性并重用代码等.这本身在matlab中并不困难,例如

例1:

function main()
  myfunc('goat');
end

function myfunc(x)
  fprintf(x);
end
Run Code Online (Sandbox Code Playgroud)

我的问题是我有一个biig数据文件,我只想加载一次,这样我就可以在开发过程中重新运行我的代码,而无需花时间重新加载数据.在我目前的框架中,这不是一个问题,只有一个没有内部函数的大脚本.一种解决方案是拥有两个matlab脚本文件.一个用于加载数据,然后在另一个脚本中调用函数.

但是在上面的示例1中,真正的全局变量声明将不起作用,并且每次运行脚本时都会强制加载biig文件.我想要做的是两个例子:

例2:

% Global variable
if ~exist('data',var) 
  data = load biigdatafile.mat;  %FAILS, outside function.
end

function main()
  myfunc('goat');
end

function myfunc(x)
  fprintf(x);
end
Run Code Online (Sandbox Code Playgroud)

例3:

function main()
  % Global variable
  if ~exist('data',var)
    global data;     % Is not really global after whole script is completed.
    data = load biigdatafile.mat;
  end
  myfunc('goat');
end

function myfunc(x)
  fprintf(x);
end
Run Code Online (Sandbox Code Playgroud)

所以我的问题是如何声明一个真正的全局变量,如例2所示,我将数据加载一次以保留在工作区中,同时在一个脚本中调用我的函数?

matlab global-variables

5
推荐指数
1
解决办法
1207
查看次数

在MATLAB中将矩阵从函数传递到函数

我是MATLAB的新手,我有一个简单的问题.如果我有以下结构化功能怎么办:

function[A] = test(A)
test1(A);
test2(A);
end

function test1(A)
#% do something with A
end

function test2(A)
#% do something else with the newly modified A
end
Run Code Online (Sandbox Code Playgroud)

如何将A从函数传递到函数以保持其修改的性质?(假设A是矩阵)

编辑:让我们的情况变得更简单一些.假设我的主要功能是:

function[a]=test(a)
test1(a);
#%test2(a);
end
Run Code Online (Sandbox Code Playgroud)

test1()定义为:

function[a] = test1(a)
a=5;
end
Run Code Online (Sandbox Code Playgroud)

然后,我调用该函数testtest(3),我想提出报告ans = 5,但它仍然报告ans = 3.

谢谢!

matlab

3
推荐指数
1
解决办法
3461
查看次数

标签 统计

matlab ×2

global ×1

global-variables ×1

octave ×1