【发布时间】:2015-11-16 15:30:12
【问题描述】:
刚开始使用 matlab,在为以下操作找到解决方案时遇到了一些麻烦:
我正在尝试使用一个不接受任何参数作为输入的函数来初始化一个包含 1000 个不同值的向量。我可以使用 for 循环来做到这一点,但没有找到如何做到这一点。
我期望它会起作用:
z = zeros(1,1000)
result = arrayfun(*functionname*,z)
然而,这会给出一个错误,指出第一个输入必须是函数句柄。
我的函数是计算 pi 的蒙特卡罗方法的简单实现:
function Result = mcm()
clear
N=1000;
M=0;
for j=1:N
p=[2*rand-1; 2*rand-1];
if p'*p<1
M=M+1;
end
end
Result=4*M/N
【问题讨论】:
-
你想在所有地方都使用相同的值吗?如果是这样,请使用
z = ones(1,1000) * mcm; -
在这种情况下,我认为循环是最合适的方式。
标签: matlab vector vectorization