matlab齿轮冲击函数

img

img

有没有学霸,帮帮我,怎么用matlab程序画出时域图和频域图,用图中的函数公式
上图一个是模型,一个是参数

https://blog.csdn.net/weixin_50951788/article/details/126366887


% 齿轮冲击函数的参数设置
t = 0:0.01:5;          % 时间向量
T = 1;                  % 齿轮转动周期
N = 10;                 % 齿轮齿数
a = 1;                  % 冲击幅值
w = 2*pi/T;             % 角频率
n = 1:N;                % 齿轮齿数向量

% 齿轮冲击函数的时域图
y = zeros(size(t));
for i = 1:length(n)
    y = y + a*sin(n(i)*w*t);
end
figure(1);
plot(t,y,'LineWidth',2);
title('齿轮冲击函数的时域图');
xlabel('时间 (s)');
ylabel('幅值');

% 齿轮冲击函数的频域图
Y = fft(y);
f = (0:length(Y)-1)*(1/(length(Y)*mean(diff(t))));
figure(2);
plot(f,abs(Y),'LineWidth',2);
title('齿轮冲击函数的频域图');
xlabel('频率 (Hz)');
ylabel('幅值');

参考GPT和自己的思路:要绘制该冲击响应函数的时域图和频域图,可以按照以下步骤进行操作:

1 定义函数:在MATLAB中,首先需要定义该函数,可以按照给定的公式编写代码,例如:

function [h] = gear_impact_function(t, zeta, fd, A, tau)
% t: 时域采样点
% zeta: 阻尼比
% fd: 固有频率
% A: 振幅
% tau: 冲击函数的延迟时间
    h = A*exp(-2*pi*zeta./sqrt(1-zeta^2)*fd*(t-tau)).*sin(2*pi*fd*(t-tau)).*(t>=tau);
end

2 绘制时域图:使用定义好的函数,可以通过设置不同的参数,绘制不同的时域图。例如,可以使用以下代码绘制zeta=0.1,fd=50Hz,A=1,tau=0的时域图:

% 设置采样时间和采样率
t = 0:0.0001:0.01; % 采样时间
fs = 1/(t(2)-t(1)); % 采样率

% 调用函数并绘制时域图
h = gear_impact_function(t, 0.1, 50, 1, 0);
plot(t, h);
xlabel('时间 (s)');
ylabel('冲击响应');
title('时域图');

3 绘制频域图:可以使用MATLAB中的快速傅里叶变换(FFT)函数,将时域信号转换为频域信号,并绘制频域图。例如,可以使用以下代码绘制zeta=0.1,fd=50Hz,A=1,tau=0的频域图:

% 进行快速傅里叶变换,并计算频率轴
Y = fft(h);
f = (0:length(Y)-1)*fs/length(Y);

% 绘制频域图
plot(f, abs(Y));
xlabel('频率 (Hz)');
ylabel('幅度');
title('频域图');

在绘制频域图时,需要将采样信号进行傅里叶变换,并计算出频率轴。

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
以下是一个matlab程序,演示如何画出齿轮冲击函数的时域图和频域图,代码中已经包含了所需的函数公式和参数:

% 设置参数
T = 1e-5; % 采样周期
N = 64; % 采样点数
t = (0:N-1)*T; % 时间向量
f = linspace(-1/T,1/T,N); % 频率向量

% 定义齿轮冲击函数
function y = impulse(t, tau, w)
    y = exp(-tau*t) .* sin(w*t) .* (t >= 0);
end

% 计算时域图
tau = 1e-4; % 冲击时间常数
w = 2*pi*1e3; % 冲击角频率
y = impulse(t, tau, w); % 计算冲击函数
subplot(2,1,1); % 分成两个图,第一个图
plot(t, y); % 绘制时域图
xlabel('Time (s)'); % X轴标签
ylabel('Amplitude'); % Y轴标签
title('Time Domain Plot'); % 图形标题

% 计算频域图
Y = fftshift(fft(y)); % 计算冲击函数的FFT
subplot(2,1,2); % 分成两个图,第二个图
plot(f, abs(Y)); % 绘制频域图
xlabel('Frequency (Hz)'); % X轴标签
ylabel('Magnitude'); % Y轴标签
title('Frequency Domain Plot'); % 图形标题

上述程序计算的是冲击函数的时域图和频域图,可以根据需要调整参数tauw来改变函数行为。
如果我的回答解决了您的问题,请采纳!