声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2014|回复: 6

[综合讨论] MATLAB编程做电机轴承故障诊断遇见cell元组的问题

[复制链接]
发表于 2019-3-20 15:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
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 进行归一化
[ewt{:,i},mfb{:,i},boundaries(i,:)]=EWT1D(f(i),params);
end
错误提示:
需要大括号或点索引表达式中的一个输出,但结果有 0 个。
出错 Test_EWT1D (line 108)
[ewt{:,i},mfb{:,i},boundaries(i,:)]=EWT1D(f(i),params);
在用一个小样本进行测试时使用的程序是:
% f=(f-mean(f))/std(f,1);%对 sig 进行归一化
% [ewt,mfb,boundaries]=EWT1D(f,params);
返回:
ewt为 91cell
mfb为91cell
boundaries为 [9,1]矩阵
不知道应该如何修改改程序,还望各位指点12!
回复
分享到:

使用道具 举报

 楼主| 发表于 2019-3-20 16:13 | 显示全部楼层
第二句应该改成这个,f(i,:)=(f(i,:)-mean(f(i,:)))/std(f(i,:),1);%对 sig 进行归一化。 但还是不对的啊
 楼主| 发表于 2019-3-20 16:14 | 显示全部楼层
望各位指点
 楼主| 发表于 2019-3-20 16:17 | 显示全部楼层
又出现这个问题:串联的矩阵的维度不一致。  出错 EWT1D (line 58) f=[f(l-1:-1:1);f;f(end:-1:end-l+1)];
 楼主| 发表于 2019-3-20 17:39 | 显示全部楼层
现在改成了这个样子,但赋值好像有点问题
 楼主| 发表于 2019-3-20 17:41 | 显示全部楼层
   for i=1:40
    f(:,i)=(f(:,i)-mean(f(:,i)))/std(f(:,i),1);%对 sig 进行归一化
    [ewt,mfb,boundaries]=EWT1D(f(:,i),params);
    ewt{i,1}=ewt;
    mfb{i,1}=mfb;
    boundaries(:,i)=boundaries;
   end
 楼主| 发表于 2019-3-21 18:34 | 显示全部楼层
              改成了这个样子,就可以运行了。发现之前在对ewt等进行赋值的时候,ewt被反复的赋值,又被不停的覆盖,所以导致赋值语句错误
for i=1:40
    f(:,i)=(f(:,i)-mean(f(:,i)))/std(f(:,i),1);%对 sig 进行归一化
    [ew,mf,boundarie]=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
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-13 09:57 , Processed in 0.062646 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表