Jessica_Liu 发表于 2019-3-20 15:30

MATLAB编程做电机轴承故障诊断遇见cell元组的问题

MATLAB编程做电机轴承故障诊断遇见cell元组的问题
编写程序的主要思路是:
1.同时输入四个样本数据,同时分成40个小样本每个小样本2048个数据
2.对每个小样本进行EWT变换,得到IMF分量
之前一直是取得一个小样本对算法进行验证,对小样本的2048个数据的EWT变换基本以实现。现在想把40个小样本同时进行EWT变换,却遇见了问题。
程序:
for i=1:40
f(i)=(f(i)-mean(f(i)))/std(f(i),1);%对 sig 进行归一化
=EWT1D(f(i),params);
end
错误提示:
需要大括号或点索引表达式中的一个输出,但结果有 0 个。
出错 Test_EWT1D (line 108)
=EWT1D(f(i),params);
在用一个小样本进行测试时使用的程序是:
% f=(f-mean(f))/std(f,1);%对 sig 进行归一化
% =EWT1D(f,params);
返回:
ewt为 91cell
mfb为91cell
boundaries为 矩阵
不知道应该如何修改改程序,还望各位指点12!

Jessica_Liu 发表于 2019-3-20 16:13

第二句应该改成这个,f(i,:)=(f(i,:)-mean(f(i,:)))/std(f(i,:),1);%对 sig 进行归一化。 但还是不对的啊

Jessica_Liu 发表于 2019-3-20 16:14

望各位指点

Jessica_Liu 发表于 2019-3-20 16:17

又出现这个问题:串联的矩阵的维度不一致。出错 EWT1D (line 58) f=;

Jessica_Liu 发表于 2019-3-20 17:39

现在改成了这个样子,但赋值好像有点问题

Jessica_Liu 发表于 2019-3-20 17:41

   for i=1:40
    f(:,i)=(f(:,i)-mean(f(:,i)))/std(f(:,i),1);%对 sig 进行归一化
    =EWT1D(f(:,i),params);
    ewt{i,1}=ewt;
    mfb{i,1}=mfb;
    boundaries(:,i)=boundaries;
   end

Jessica_Liu 发表于 2019-3-21 18:34

            改成了这个样子,就可以运行了。发现之前在对ewt等进行赋值的时候,ewt被反复的赋值,又被不停的覆盖,所以导致赋值语句错误
for i=1:40
    f(:,i)=(f(:,i)-mean(f(:,i)))/std(f(:,i),1);%对 sig 进行归一化
    =EWT1D(f(:,i),params);
    if Fuzzy_entropy==1
    fuzzye= show_Fuzzyentropy(ew);
    end
    ewt{1,i}=ew;
    mfb{1,i}=mf;
    boundaries{i}=boundarie;
    fuzzyen{i}=fuzzye;
    end
页: [1]
查看完整版本: MATLAB编程做电机轴承故障诊断遇见cell元组的问题