14
社区成员
发帖
与我相关
我的任务
分享在座的各位大佬可以帮我看看程序么,总是显示我定义的变量m没有使用,孩子初学matlab,处处碰壁啊
x=sym('x');
m=sym('m');
q=1/(sqrt(2*pi)*10)*exp(-1*(x-m)^2/2/10^2);
p=int(q.x,2,inf);
function j=m/p;
fun=@j;x1=0;x2=10000;
m=fminbnd(fun,x1,x2);
end

% 定义符号变量
x = sym('x');
m = sym('m');
% 定义符号函数 q
q = 1/(sqrt(2*pi)*10)exp(-(x-m)^2/(210^2));
% 计算积分 p(这里我们假设 m 是一个常数,并使用数值积分作为近似)
% 注意:由于 m 是符号变量,我们不能直接对它进行符号积分,因为这会得到一个包含 m 的表达式
% 我们可以使用 MATLAB 的数值积分函数,如 integral 或 integral2,但这里我们只需要一维积分
% 所以我们将 m 替换为一个具体的值(例如 m0),然后计算积分
m0 = 1; % 假设 m 的一个初始值
p_func = @(x) subs(q, m, m0); % 替换 m 为 m0 的匿名函数
p = integral(p_func, 2, Inf); % 使用数值积分计算 p
% 现在我们可以定义一个函数句柄 fun,它接受 m 作为输入,并返回 m/p 的值
% 但由于 p 是在 m0 处计算的,我们需要重新计算 p 对于每个新的 m 值
fun = @(m_val) m_val / integral(@(x) subs(q, m, m_val), 2, Inf);
% 使用 fminbnd 查找使 fun 最小的 m 值
x1 = 0;
x2 = 10000;
m_min = fminbnd(fun, x1, x2);
% 显示结果
disp(['m 的最小值为:', num2str(m_min)]);
function 函数声明有问题,应该是function j=functionName(参数列表)
