我一直试图为3个变量创建一个循环,这些变量必须相互加1,但这些变量必须以0.1的间隔变化,只要它们不超过1的和。
此外,我还试图制作另一个循环,将变量的每个组合导出到一个单独的CSV文件中。我试过几种方法,但都没有成功。。
如果你能解决它,那将是非常有帮助的。谢谢
function f = MultipleMax(w,mu,sigma)
sum = 0;
zero = 1e-9;
n = length(w);
for i=1:length(w)
if w(i) > zero
sum = sum - w(i) * log(w(i));
end
end
f(1) = -(x)*(w * mu') + (y)*(sqrt(w*sigma*w')) + (z)*exp(sum) ;
end
正如您在f(1(中看到的,这3个变量是x、y和z,然后它们必须加1。因此,我需要创建一个循环,将这些变量中的每一个组合为0.1的变化。
我的另一个问题是,我用这段代码导出表,T是表的名称:
writetable(T,'Nombre.csv');
然后,对于我循环上述变量的每个组合,我必须从每个表中导出一个文件。但我使用的函数没有任何结果。
如果你有任何答案,那将是非常有帮助的,谢谢你。
您似乎在寻找这样的东西。
for x = 0:0.1:1
for y = 0:0.1:1
z = 1-x-y
...
end
end
关于文件名,听起来x,y,z
的每个组合都需要一个单独的文件。实现这一点的一种方法是将x,y,z
的值作为文件名的一部分。例如:
writetable(T,sprintf('Nombre-x-%.1f-y-%.1f.csv',x,y))
这包括x和y的值作为文件名的一部分。要找到z,请使用x+y+z=1这一事实。