查看: 178|回复: 2|关注: 0

[已答复] 新人贴,如何用matlab实现较为复杂的数学公式

[复制链接]

新手

5 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
发表于 2019-1-31 09:42:33 | 显示全部楼层 |阅读模式
如题,如何用matlab实现高斯扩散分布函数

高斯扩散分布函数

高斯扩散分布函数

论坛优秀回答者

专家

2979 麦片

财富积分


20003000


2

主题

3297

帖子

668

最佳答案
  • 关注者: 137
发表于 2019-2-2 10:18:33 | 显示全部楼层
直接写就是啦。
都是些简单的初等函数,matlab都有。

新手

5 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
 楼主| 发表于 2019-2-2 10:20:16 | 显示全部楼层
maple1314168 发表于 2019-2-2 10:18
直接写就是啦。
都是些简单的初等函数,matlab都有。

嗯,其实我看到这个公式的时候是一脸懵的,之后慢慢写出来就好了。
f = zeros (101,101);   %第二道循环矩阵
g = zeros (101,101);   %结果矩阵
D04 = zeros (101,101); %输出矩阵
D05 = zeros (101,101); %比较矩阵
a = 0;
n = 0;
v = 0.9;
a1 = [];
g1 = [1:54];
g2 = [1:34];
g3 = [1:100];
qw = (sqrt(2 * pi))^3;
er1 = std(g3);
er2 = std(g3);
number1 = 1;
number2 = 1;
i1 = 0;
j1 = 0;
j2 = 1;
i2 = 1;
for s = [1:10000];              %坐标选取循环所在开始
    j1 = j1 + 1;
    if j1 == 100;
        j2 = j2 + 1;
        j1 = 1;
    end;
    if j2 >= 101
        break
    end
    if D01(j2,j1) ~= 0 && j2 <= 100;
%%公式所在的第二道循环------------------------------------------------------
        for i = [1:10000];
            i1 = i1 + 1;
            if i1 >= 101;
                i2 = i2 + 1;
                i1 = 1;
            end
            if i2 >= 101
                break
            end
                if j1 ~= i1 && j2 ~= i2
                    f(i2,i1) = v /(qw * er1^2) * exp(- ((i2-j2)^2/(2 * (er1)^2)) - ((i1-j1)^2/(2 * (er2)^2)));
                end
            number2 = number2 + 1
        end
%%公式所在的第二道循环结束--------------------------------------------------
    end
    n = sum(f(:));
    n = n - f(j2,j1);
    D04(j2,j1) = n
    number1 = number1 +1
    D05 = D01/D04
end
number2 = number2
number1 = number1
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

快速回复 返回顶部 返回列表