matlab - 作为参数传递的函数不会计算多次 matlab

标签 matlab function loops random

我正在编写一个Matlab脚本,它需要重复生成随机数。我遇到了一个问题,如果我将随机生成函数作为参数传递给另一个函数,那么在它传递到的函数中,它只计算一次。

这里是一些示例代码:

这是我的文件randgen.m:

function number = randgen()
    'HELLO WORLD'
    number = rand(1);
end

这是我的文件problemtester.m:

function arr = problemtester(rgen)
firstrand = rgen();
for i = 1:1000
    arr(i) = rgen();
end

当我运行命令时

x = Problemtester(randgen);

HELLO WORLD 打印一次,并且 x 填充有 1000 个相同随机数的副本,因此即使循环运行了 1000 次,该函数也只能计算一次次。为什么这个函数只计算一次,尽管重复调用它,更重要的是,如何让它在每次循环迭代时调用?

最佳答案

通过调用函数

x = problemtester(randgen)

MATLAB 将首先计算 randgen,因为这是一个函数(并且可以在没有任何参数的情况下调用)。此时,会打印 HELLO WORLD。然后,该函数调用的返回值被传递给 problemtester,后者将这个 one 值保存到 arr 中 1000 次并返回。

要使problemtester调用函数randgen,您必须提供function handle ,这相当于 MATLAB 中的函数指针。

x = problemtester(@randgen)

这会打印 HELLO WORLD 一千次,并返回一个很好的随机向量。

关于matlab - 作为参数传递的函数不会计算多次 matlab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38355424/

相关文章:

javascript - 如何循环或枚举 JavaScript 对象?

c++ - 有什么方法可以在 matlab 中完成 i++ 吗?

C++ - 调用的 Lua 函数总是返回 0

python - 在 Python 上使用 PIL 更改像素颜色

python - 如何生成动态函数名称并使用 Python 中的用户输入调用它

function - 为什么函数指针的行为在 Rust 中会根据函数指针的可变性而有所不同?

java - 我如何使用 For 循环而不是 while 来做同样的事情?

arrays - 在Matlab中将Iplimage转换为矩阵或数组

python - 汉宁窗值在 Python 和 Matlab 中不匹配

matlab - Matlab 中的透视变换