2013-03-26 61 views
0

我想通过比较它同时记录的LVDT位移来验证一些加速器数据。要做到这一点,我试图区分两次LVDT数据以获得加速度。然而,当我运行我的代码有错误Matlab没有处理第二个for循环

Undefined function or variable 'DiffDiffLVDT'. 

调查这我发现Matlab的不处理第二个for循环,因此变量DiffDiffLVDT是从来没有。

为什么跳过第二个循环?

enter code here 
clear all 

clc 

test2 = csvread('HZ1.csv'); %raw data from excel 
time = test2(:,1); 
%% Filtering 
f=250;% sampling frequency 
f_cutoff = 2; % cutoff frequency 
f_cutoff2 = 5; 

fnorm =f_cutoff/(f/2); % normalized cut off freq, you can change it to any value depending on your requirements 
fnorm2 =f_cutoff2/(f/2); 

[b1,a1] = butter(4,fnorm,'low'); % Low pass Butterworth filter of order 4 
[b2,a2] = butter(4,fnorm2,'low'); % Low pass Butterworth filter of order 4 

filtaccZ = filtfilt(b2,a2,test2(:,6)); 
filtLVDTZ = filtfilt(b1,a1,test2(:,7)); 

%% Remove Offset 

Accz = filtaccZ -mean(filtaccZ); 
LVDTz = filtLVDTZ - mean(filtLVDTZ); 

%% Unit Conversion 

LVDTm = LVDTz/1000; % mm to m 

%% LVDT Displacement to Acc 

% Displacement to Velocity 
for d = 2:1:(size(LVDTm)-1) 

    x = LVDTm(d+1); 

    y = LVDTm(d-1); 

    z = x-y; %differnce in y 

    a = time (d+1); 

    b = time (d-1); 

    c = a-b; %differnce in x 

    DiffLVDT(d)= (z/c); % Displacement to velocity 

end 

velocity = DiffLVDT; 

% Velocity to Acceleration 
for e=1:1:(size(velocity)-1) 
    x2 = velocity(e+1); 

    y2 = velocity(e-1); 

    z2 = x2-y2; %differnce in y 

    a2 = time (e+1); 

    b2 = time (e-1); 

    c2 = a2-b2; %differnce in x 

    DiffDiffLVDT(e)= (z2/c2) %velocity to acc. 

end 

Acc= DiffDiffLVDT 
%% Plotting 
close all 
figure 
hold on 
plot(time(1:5000),Acc(1:5000),'b') 
plot(time(1:5000),Accz(1:5000),'r') 

grid on;box on 
legend('DiffDiffLVDTFilter','Accz') 

    enter code here 

回答

4

因为

1:1:(size(velocity)-1) 

不会做你希望它是什么。

velocity1xN数组,size(velocity)因此返回[1 N]。冒号运营商只关心数组中要循环,因为

1:1:[1 N]-1 == 1:1:1-1 == 1:1:0 == Empty matrix 

的第一个值和阵列上方结束是空的。由于这类问题构建时,你应该总是使用,而不是下面的size(var)任循环:

size(var, n) % Returns the size of the nth dimension of var 
length(var) % Returns the size of the largest dimension of var 
numel(var) % Returns the number of elements in var 
+1

这正是我想要的和数据完美匹配。非常感谢您的帮助。 – user2213349 2013-03-26 22:58:51

+0

@ user2213349不客气。请不要忘记接受答案。 – erikced 2013-03-27 07:50:49