首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用matlab绘制迟滞曲线?

如何使用matlab绘制迟滞曲线?
EN

Stack Overflow用户
提问于 2016-08-20 00:58:25
回答 1查看 1.6K关注 0票数 1

我想在Matlab中使用指数模式下的方程对忆阻器进行建模。我的目标是在Matlab中只得到滞后图(i-v图)。方程式是这样的

代码语言:javascript
复制
i=x^n*b*sinh(av)+m(exp(gv)-1)
x'=Af(x)h(v)

其中f(x)是窗函数,h(v)是多项式函数,A是常量。

代码语言:javascript
复制
f(x)=1-(2x-1)^2
h(v)=cv+dv^3; 

cd是常量c<0 & d>0 a=2; b=0.01; g=4; n=4; A=25; m=0.001;

x是device..is的内部状态,在matlab中可以作图吗?我已经在matlab中尝试过了,它显示错误

EN

回答 1

Stack Overflow用户

发布于 2016-08-20 06:25:00

这是我在非常简短的搜索后在谷歌上找到的脚本:http://webee.technion.ac.il/people/skva/Memristor%20Models/MATLAB/memristor.m

你可以选择你想要使用的模型(在你的例子中是非线性离子漂移模型),窗函数的类型(我假设你的是Jogelkar的)和非线性的电压-电流关系。

在修改了一下他们的脚本之后,你应该会得到类似这样的结果:

代码语言:javascript
复制
b=0.01; g=4; n=4; a=2;A=25; m=0.001;
c=-1;d=4;%your constants
numOfPoints = 10000;
t = linspace(-1, 1,numOfPoints);
dt = t(2) - t(1);
volt = .003*sin(2*pi*t);
x = zeros(size(t));
curr = x;
for i=2:numOfPoints
    x(i) = x(i-1) + A*(c*volt(i)+d*(volt(i))^3)*(1-(2*x(i-1)-1)^2)*dt;
    curr(i)=x(i)^n*b*sinh(a*volt(i))+m*(exp(g*volt(i))-1);
end;
fig = figure(1);
plot(volt,curr);
xlabel('Voltage');ylabel('Current');
figure(fig);

祝好运!

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

https://stackoverflow.com/questions/39044276

复制
相关文章

相似问题

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