[已解决] 请教滤波函数中size的用法

[复制链接]
yuanxing 发表于 2012-4-5 23:30:02
请教高人,下面程序中size(w)
                                   size(a)
                                   size(y)
                                   size(x)
                                   nfft
是什么意思呢?非常感谢!
function y=acc2disp(sf,fmin,fmax,c,it,x)
%%%%%%%%%%%%%%%%%%%%%%%
% sf;           % 采样频率
% fmin;         % 最小截止频率
% fmax;         % 最大截止频率
% c;            % 单位变换系数
% it;           % 积分次数
% sx=fscanf(fid,'%s',1);           %横坐标的标注
% sy1=fscanf(fid,'%s',1);           %纵坐标输入单位的标注
% sy2=fscanf(fid,'%s',1);           %纵坐标输出单位的标注
% fno=fscanf(fid,'%s',1);           %输出数据的文件名
% x=fscanf(fid,'%f',[1,inf]);    % 按行读入原始信号数据
% status=fclose(fid);
% 计算输入数据的长度
n=length(x);
% 建立时间向量
t=0:1/sf:(n-1)/sf;
% 取大于n且与其最接近的2的整数次方为FFT长度
nfft=2^nextpow2(n);
% FFT 变换
y=fft(x,nfft);
% 计算频率间隔
df=sf/nfft;
% 计算指定频带对应频率数组的下标
ni=round(fmin/df+1);
na=round(fmax/df+1);
% 计算原频率间隔
dw=2*pi*df;
% 建立正的离散原频率向量
w1=0:dw:2*pi*(0.5*sf-df);
% 建立负的离散原频率向量
w2=2*pi*(0.5*sf-df):-dw:0;
% 将正负付给一个数组
w=[w1,w2];
%以积分次数为指数,建立元频率向量
w=w.^it;
% 进行积分的频域变换
a=zeros(1,nfft);
size(w)
size(a)
size(y)
size(x)
nfft
a(2:nfft-1)=y(2:nfft-1)./w(2:nfft-1);
if it==2
    % 进行二次积分的相位变换
    y=-a;
else
    % 进行一次积分的相位变换
    real(y)=imag(a);
    imag(y)=-real(a);
end
% 消除指定正频带外的频率成分
a(ni:na)=y(ni:na);
% 消除指定正频带外的频率成分
a(nfft-na+1:nfft-ni+1)=y(nfft-na+1:nfft-ni+1);
% ifft变换
y=ifft(a,nfft);
% 积分结果
% y=real(y(1:n));

最佳答案


songzy41 发表于 2012-4-6 20:59:04
这个程序是取自“MATLAB在振动信号处理中的应用”一书中,原函数序并没有带size语句,该函数是由加速度求位移。w,a,y,x都是数组,用size主要看一下它的行与列的排列。

4 条回复


honglei.chen 发表于 2012-4-5 23:34:38
得到矩阵的行,列数,没什么用,我想是原作者拿来检查结果是否符合预期的

songzy41 发表于 2012-4-6 20:59:04
这个程序是取自“MATLAB在振动信号处理中的应用”一书中,原函数序并没有带size语句,该函数是由加速度求位移。w,a,y,x都是数组,用size主要看一下它的行与列的排列。
回复此楼

yuanxing 发表于 2012-4-10 22:11:17
小弟明白了,非常感谢楼上两位的回复!

yuanxing 发表于 2012-4-12 11:55:24
songzy41 发表于 2012-4-6 20:59
这个程序是取自“MATLAB在振动信号处理中的应用”一书中,原函数序并没有带size语句,该函数是由加速度求位 ...

请教songzy41老师,分析一个0.6m左右的钢梁的振型时,用加速度频响函数,还是用位移频响函数啊?哪个比较好?非常感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表