MATLAB仿真程序代码--模拟品牌传播的过程.docx

上传人:b**** 文档编号:14662096 上传时间:2023-06-25 格式:DOCX 页数:5 大小:16.19KB
下载 相关 举报
MATLAB仿真程序代码--模拟品牌传播的过程.docx_第1页
第1页 / 共5页
MATLAB仿真程序代码--模拟品牌传播的过程.docx_第2页
第2页 / 共5页
MATLAB仿真程序代码--模拟品牌传播的过程.docx_第3页
第3页 / 共5页
MATLAB仿真程序代码--模拟品牌传播的过程.docx_第4页
第4页 / 共5页
MATLAB仿真程序代码--模拟品牌传播的过程.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

MATLAB仿真程序代码--模拟品牌传播的过程.docx

《MATLAB仿真程序代码--模拟品牌传播的过程.docx》由会员分享,可在线阅读,更多相关《MATLAB仿真程序代码--模拟品牌传播的过程.docx(5页珍藏版)》请在冰点文库上搜索。

MATLAB仿真程序代码--模拟品牌传播的过程.docx

MATLAB仿真程序代码--模拟品牌传播的过程

附录二

MATLAB仿真程序代码

function[Et,Dt]=BrandSpread(u0,params)

%这个程序用来模拟品牌传播的过程

%n研究的区域的大小,为n*n的点阵

%t时刻

%u(x,y,t)t时刻(x,y)点的品牌信心值

%Q(x,y,t)t时刻(x,y)点的品牌信号值

%c(x,y)(x,y)点的品牌传播速率

%k(x,y)(x,y)点对品牌信号的敏感程度

%Initialization

ifnargin<2

params=strcut;

end;

ifisfield(params,'con')&&~isempty(params.con)con=params.con;

else

con=0;

end;

ifisfield(params,'maxf')&&~isempty(params.maxf)maxf=params.maxf;

else

maxf=10;

end;

ifisfield(params,'v')&&~isempty(params.v)

v=params.v;

else

v=1;

end;

ifisfield(params,'n')&&~isempty(params.n)

n=params.n;

else

n=10;

end;

ifisfield(params,'maxt')&&~isempty(params.maxt)

maxt=params.maxt;

else

maxt=20;

end;

t=1;%循环次数

tflag=1;%tflag=1时说明未达到平衡,需要做交换;tflag=0时则达到平衡,区域内不会出现信号交换,停止信号交换

u=u0;

%随机生成[1,10]上的均匀分布

k(:

:

)=round(9*rand(n))+1;

%根据u和k计算每一个点上的Q

Q(:

:

)=u(:

:

).*k(:

:

);

%顺序式传播,

%先由点(i,j)与其右边的点(i,j+1)进行交换

%再由点(i,j)与其下方的点(i+1,j)进行交换

E(t)=sum(sum(u))/n^2;%

D(t)=sum(sum((u-E(t)).^2))/n^2;

%随机获得一个需要观察的点(x_s,y_s)

x_s=round(rand*n)

y_s=round(rand*n)

f

(1)=u(x_s,y_s);

fprintf('Thecoordinateoftheobservepointis\n');

fprintf('(%d,%d)\n',x_s,y_s);

fprintf('it\tmeanvalue\tVariance\t\n');

fprintf('%d\t%.3e\t%.3e\t\n',t,E,D);

ift<=maxf

figure;

x=1:

n;

y=x;

[X,Y]=meshgrid(x,y);

mesh(X,Y,u(:

:

));

end;

while(tflag==1)

t=t+1;

tflag=0;

%Phase1

for(i=1:

n-1)

for(j=1:

n)

deltaQ=(k(i+1,j)*Q(i,j)-k(i,j)*Q(i+1,j))/(k(i+1,j)+k(i,j));

ifdeltaQ>=v

deltaQ=v;

end

if(deltaQ~=0)

tflag=1;

end

Q(i,j)=Q(i,j)-deltaQ-abs(deltaQ)*con;

Q(i+1,j)=Q(i+1,j)+deltaQ-abs(deltaQ)*con;

u(i,j)=Q(i,j)/k(i,j);

u(i+1,j)=Q(i+1,j)/k(i+1,j);

end

end

%Phase2

for(i=1:

n)

for(j=1:

n-1)

deltaQ=(k(i,j+1)*Q(i,j)-k(i,j)*Q(i,j+1))/(k(i,j+1)+k(i,j));

ifdeltaQ>=v

deltaQ=v;

end

if(deltaQ~=0)

tflag=1;

end

Q(i,j)=Q(i,j)-deltaQ-abs(deltaQ)*con;

Q(i,j+1)=Q(i,j+1)+deltaQ-abs(deltaQ)*con;

u(i,j)=Q(i,j)/k(i,j);

u(i,j+1)=Q(i,j+1)/k(i,j+1);

end

end

E(t)=sum(sum(u))/n^2;

D(t)=sum(sum((u-E(t)).^2))/n^2;

f(t)=u(x_s,y_s);

ift<=maxf

figure;

x=1:

n;

y=x;

[X,Y]=meshgrid(x,y);

mesh(X,Y,u(:

:

));

end;

fprintf('%d\t%.3e\t%.3e\t\n',t,E(t),D(t));

if(t>=maxt)

break;

end;

iftflag==0

break;

end;

end;

figure;

plot(1:

t,E,'b-','linewidth',1);

xlabel('time');

ylabel('meanvalue');

legend('changeofmeanvalue');

figure;

plot(1:

t,D,'r-','linewidth',1);

xlabel('time');

ylabel('variance');

legend('changeofvariance');

figure;

plot(1:

t,f,'g-','linewidth',1);

xlabel('time');

ylabel('U');

legend('changeofU');

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2