【Matlab】基于Prandtl−Ishlinskii的迟滞模型-RLS辨识

PI模型

PI迟滞模型的输出公式:

代码记录

此代码为根据PI模型,已知输入(正弦函数幅值为3.5)、阈值以及权重值,利用matlab生成迟滞回线。

复制代码
%% The Prandtl-Ishlinskii Hysteresis Model-
%% 20241021
clc;clear;
close all;
%% PI Model
%% Define the Input-读取Excel文件进行提取数据列
filename = 'C:\Users\jia\Desktop\yadian\data\test.xlsx';
opts = detectImportOptions(filename);
opts.VariableNamingRule = 'preserve';  % 设置保留原始列名
data = readtable(filename, opts);
t = data{:, 'Time'}; 
V_val = data{:, 'Value1'};
% L_val = data{:, 'Value2'};
v = V_val'; % 输入信号
%% Thresholds and weights
r=0:0.5:3;
n = length(r); % 阈值个数
P=[0.72    0.6    0.48    0.36    0.24    0.12    0.012]; %weights
%% Play operator Calculation of Fr
Fr=zeros(n,N);
for j=1:1:n
    M=max(v(1)-r(j),min(v(1)+r(j),0));
    for k=2:1:N  
        Fr(j,1) = M; 
        F_inc=v(k);
        F_dec=v(k);
        A=F_inc-r(j);
        B=min(F_dec+r(j),Fr(j,k-1));
        Fr(j,k)=max(A,B); % Equation (1)
    end%% End sample
end %% End threshold loop

%% The output of PI model
y=P*Fr;  
% y(1) = 0;
% y_error=y-L_val';

% H1-真实输入输出与估计输出的比较
h1=figure;
set(h1,'WindowStyle','docked');
hold on
plot(1:N, v, 'b', 'LineWidth', 1.5);  
plot(1:N, y, 'r', 'LineWidth', 1.5); 
grid on; 
xlabel('t','Interpreter','latex')
ylabel('y','Interpreter','latex')
legend('V','real-y');
% H2-绘制真实输出和估计对比
h2=figure;
set(h2,'WindowStyle','docked');
hold on;
plot(v,y,'r','linewidth',1.5);
xlabel('V');ylabel('y');
legend('real-y');

运行结果

% H1-真实输入输出随步数变化曲线

% H2-绘制输入和输出迟滞回线

相关推荐
MATLAB代码顾问5 小时前
5大智能算法优化标准测试函数对比(Python实现)
开发语言·python
万粉变现经纪人6 小时前
如何解决 pip install llama-cpp-python 报错 未安装 CMake/Ninja 或 CPU 不支持 AVX 问题
开发语言·python·开源·aigc·pip·ai写作·llama
清风明月一壶酒7 小时前
OpenClaw自动处理Word文档全流程
开发语言·c#·word
其实防守也摸鱼7 小时前
CTF密码学综合教学指南--第五章
开发语言·网络·笔记·python·安全·网络安全·密码学
小郑加油8 小时前
python学习Day12:pandas安装与实际运用
开发语言·python·学习
AC赳赳老秦8 小时前
投标合规提效:用 OpenClaw 实现标书 / 合同自动审核、关键词校验、格式优化,降低废标风险
开发语言·前端·python·eclipse·emacs·deepseek·openclaw
KuaCpp8 小时前
C++面向对象(速过复习版)
开发语言·c++
wbs_scy8 小时前
Linux线程同步与互斥(三):线程同步深度解析之POSIX 信号量与环形队列生产者消费者模型,从原理到源码彻底吃透
java·开发语言
2zcode8 小时前
基于MATLAB元胞自动机(CA)的AZ80A镁合金动态再结晶(DRX)过程模拟
开发语言·matlab·动态再结晶
iCxhust9 小时前
微机原理实践教程(C语言篇)---A001闪烁灯
c语言·开发语言·汇编·单片机·嵌入式硬件·51单片机·微机原理