首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过数值模拟在初始解中包含随机扰动噪声

如何通过数值模拟在初始解中包含随机扰动噪声
EN

Stack Overflow用户
提问于 2017-08-10 20:46:46
回答 2查看 809关注 0票数 0

我在matlab中用分步法求解具有位势项的NLSE方程。我想看到它的数值解。u=sech(x)是该数值算法中的初始猜测解。但我想在matlab的这个初始猜测解中添加10%的随机扰动。该怎么做呢?是不是像这样:

代码语言:javascript
复制
u=sech(x)+10/100*cos(x)

其中随机扰动是正弦的。

EN

回答 2

Stack Overflow用户

发布于 2017-08-11 01:00:33

首先,你必须详细说明你所说的10%随机扰动到底是什么意思。如果您只想添加以u的实际值为中心的白噪声,则可以执行以下操作

代码语言:javascript
复制
% sample x values
x = 0:0.01:5;

noise_fraction = 0.1; % 10%
% the actual values
u=sech(x);
% the noise
u_noise = noise_fraction*u.*(rand(size(x))-0.5);

figure(1);cla(gca);
hold on;
nh = plot(x, u_noise);
ch = plot(x, u + u_noise);
sh = plot(x, u);
hold off;
legend([sh, nh, ch,], {'Signal', 'Noise', 'Combined'});

您应该会得到以下结果

或者,如果您希望噪波级别独立于信号并具有0.1振幅,与您在问题中尝试执行的操作类似,您可以从噪波方程中删除u

代码语言:javascript
复制
u_noise = noise_fraction*(rand(size(x))-0.5);

你会得到

票数 1
EN

Stack Overflow用户

发布于 2017-08-10 22:58:33

我还不能在你的帖子下发表评论,但如果你想要一个随机扰动,为什么不使用rand或类似的函数呢?Rand返回一个从0到1的标量或随机值数组,可以很容易地将其约束为任何所需的间隔。我用它作为我的wave问题中的随机噪声。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45614158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档