Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 使用“从加速度数据(10 Hz)中获取速度”;cumsum“;或欧米茄算法_Matlab_Integration_Velocity_Cumsum_Acceleration - Fatal编程技术网

Matlab 使用“从加速度数据(10 Hz)中获取速度”;cumsum“;或欧米茄算法

Matlab 使用“从加速度数据(10 Hz)中获取速度”;cumsum“;或欧米茄算法,matlab,integration,velocity,cumsum,acceleration,Matlab,Integration,Velocity,Cumsum,Acceleration,我想从MATLAB中的加速度数据(10 Hz)中获得速度。我有我计算的实际恒定速度(DeltaX/DeltaT)。问题是,当我使用下面的代码时,该图与实际速度图有很多不同之处。我使用了cumsum和omega算法,有人能告诉我这两种方法的代码中是否有任何问题吗?先谢谢你。 访问txt文件的链接: %%%%%%%%%cumsum方法%%%%% fid1=fopen('Acceleration_data.txt','r'); fid2=fopen('Actual_Velocity_data.txt'

我想从MATLAB中的加速度数据(10 Hz)中获得速度。我有我计算的实际恒定速度(DeltaX/DeltaT)。问题是,当我使用下面的代码时,该图与实际速度图有很多不同之处。我使用了cumsum和omega算法,有人能告诉我这两种方法的代码中是否有任何问题吗?先谢谢你。 访问txt文件的链接:

%%%%%%%%%cumsum方法%%%%%
fid1=fopen('Acceleration_data.txt','r');
fid2=fopen('Actual_Velocity_data.txt','r');
formatSpec='%f';
vel_Fast_Running=fscanf(fid2,格式规范);
acc\u Fast\u Running=fscanf(fid1,格式规范);
Fs=1000;
Ns=10;%采样频率
T=1/Fs;%%时期
L=长度(acc_Fast_Running);%信号长度
加速度数据=acc快速运行-中间值(acc快速运行);
[B,A]=黄油(6,0.098,'high');%高通滤波器
a_filter=filter(B,a,acc_快速运行);%不带直流电的加速
v_cumsum=cumsum(a_filter)*0.1;%整合
v_cumsum=v_cumsum-平均值(v_cumsum);
[B,A]=黄油(3,0.12,'低');
v_cumsum_filter=filtfilt(B,A,v_cumsum);
%子批次(1,2,2);绘图([v_cumsum'v_cumsum_filter');
等等绘图(水平快速运行)
绘图(v_cumsum_过滤器)
图例(‘实际水平’、‘集成水平’)
xlabel(‘时间’)
ylabel('速度m/s')
%%%%%%%%%%%%%%%欧米茄算术法%%%%%%%%%%%
fid1=fopen('Acceleration_data.txt','r');
fid2=fopen('Actual_Velocity_data.txt','r');
formatSpec='%f';
vel_Fast_Running=fscanf(fid2,格式规范);
acc\u Fast\u Running=fscanf(fid1,格式规范);
Fs=1000;
Ns=10;%采样频率
T=1/Fs;%%时期
L=长度(acc_Fast_Running);%信号长度
%t=(1:L)/Fs;
f=Fs*(0:L-1)/L;
acc\u Fast\u Running=acc\u Fast\u Running-平均值(acc\u Fast\u Running);
[B,A]=黄油(6,0.098,'high');%高通滤波器
a_filter=过滤器(B、a、acc_快速运行);
Y=(fft(a_滤波器));%快速傅里叶变换
对于i=1:L
如果f(i)~=0&&f(i)

没有数据运行代码,也没有图片可供判断。然而,根据我的经验,通过积分计算的速度可能与实际速度不同,这取决于初始条件和速度/加速度剖面。亲爱的NKN,你是对的。所以我编辑了我的帖子,并附上了图片和数据文件来运行我的codes@NKN你现在能检查一下吗?我们必须小心使用g(9.81平方米/秒)吗
%%%%%%%%%%%%%%% cumsum METHOD %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fid1 = fopen( 'Acceleration_data.txt', 'r' );
fid2 = fopen( 'Actual_Velocity_data.txt', 'r' );
formatSpec = '%f';
vel_Fast_Running = fscanf(fid2,formatSpec);
acc_Fast_Running = fscanf(fid1,formatSpec);
Fs=1000;
Ns = 10;%% Sampling freq
T = 1/Fs; %% Period
L = length(acc_Fast_Running); %% signal length
acceleration_data=acc_Fast_Running-median(acc_Fast_Running);
[B,A] = butter(6,0.098,'high'); %% highpass filter
a_filtr = filtfilt(B,A,acc_Fast_Running); %% acceleratiof w/o DC
v_cumsum = cumsum(a_filtr)*0.1;%integration
v_cumsum = v_cumsum - mean(v_cumsum);
[B,A] = butter(3,0.12,'low'); 
v_cumsum_filtr = filtfilt(B,A,v_cumsum);
%subplot(1,2,2);plot([v_cumsum' v_cumsum_filtr']);
hold on;plot(vel_Fast_Running)
plot(v_cumsum_filtr)
legend('Actual Vel','Vel From integration')
xlabel('Time')
ylabel('Velocity m/s')

%%%%%%%%%%%%%%% OMEGA ARITHMETIC METHOD %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fid1 = fopen( 'Acceleration_data.txt', 'r' );
fid2 = fopen( 'Actual_Velocity_data.txt', 'r' );
formatSpec = '%f';
vel_Fast_Running = fscanf(fid2,formatSpec);
acc_Fast_Running = fscanf(fid1,formatSpec);
Fs=1000;
Ns = 10;%% Sampling freq
T = 1/Fs; %% Period
L = length(acc_Fast_Running ); %% signal length
%t=(1:L)/Fs;
f = Fs*(0:L-1)/L;
acc_Fast_Running =acc_Fast_Running -mean(acc_Fast_Running );
[B,A] = butter(6,0.098,'high'); %% highpass filter
a_filtr = filtfilt(B,A,acc_Fast_Running);
Y = (fft(a_filtr)); % Fast fourier Transform
for i = 1 : L 
   if f(i) ~= 0 && f(i) < Fs/2;
       Yf(i) = Y(i)/(2*pi*f(i)*sqrt(-1)) ;
   else  
       Yf(i) = 0;
   end
end
Yf(1:100)=0; %% 
d_oa = real(ifft(Yf));
d1 = designfilt('lowpassiir','FilterOrder',4, ...
 'HalfPowerFrequency',0.1,'DesignMethod','butter');
y = filtfilt(d1,d_oa);
figure(15)
%plot( d_oa)
subplot(2,1,1)
plot(y)
xlabel('Time')
ylabel('Vel be Omega Method')
subplot(2,1,2)
plot(vel_Fast_Running )
xlabel('Time')
ylabel('Actual Velocity m/s')