查看: 1092|回复: 10|关注: 0

[已解决] 求助,错误使用 rand 、Size 输入必须为标量。怎么改错

[复制链接]

新手

7 麦片

财富积分


050


2

主题

8

帖子

0

最佳答案
clear all
set(0,'defaultfigurecolor','w');
fs=2000;%设定采样频率
N=1000;%设定数据长度
t0=[1/fs:1/fs:N/fs];
t01=t0;
t=t0+rand(1,size(t0))/fs-1/fs;
%v=0.4*randn(size(t0,1),size(t0,2));
t1=[zeros(1,500) t(501:800) zeros(1,N-800)];


报错:错误使用 rand
Size 输入必须为标量。

出错 Untitled (line 7)
t=t0+rand(1,size(t0))/fs-1/fs;

入门

57 麦片

财富积分


50500


0

主题

7

帖子

1

最佳答案
发表于 2018-5-19 15:30:38 | 显示全部楼层 |此回复为最佳答案
size(t0) 是 [1,1000], 这里应该改为rand(1,size(t0,2))

新手

7 麦片

财富积分


050


2

主题

8

帖子

0

最佳答案
 楼主| 发表于 2018-5-19 15:49:41 | 显示全部楼层
skytown 发表于 2018-5-19 15:30
size(t0) 是 [1,1000], 这里应该改为rand(1,size(t0,2))

你好,这个仿真出的频率到1000,如果我想让它到两千咋办啊

入门

57 麦片

财富积分


50500


0

主题

7

帖子

1

最佳答案
发表于 2018-5-19 16:13:31 | 显示全部楼层
频率?  你指的是t的数据长度从1000改到2000? 那直接改N=2000 即可
如果指的是采样频率的话,t的采样频率就是fs=2000,不用改

新手

7 麦片

财富积分


050


2

主题

8

帖子

0

最佳答案
 楼主| 发表于 2018-5-19 16:38:00 | 显示全部楼层
skytown 发表于 2018-5-19 16:13
频率?  你指的是t的数据长度从1000改到2000? 那直接改N=2000 即可
如果指的是采样频率的话,t的采样频率 ...

我给你段程序,你能帮我看下吗
这个仿真的时候为什么只有figure(1 ) figure(2)的图    没有figure(3)figure(4)的图
clear all
set(0,'defaultfigurecolor','w');
fs=2000;%设定采样频率
N=1000;%设定数据长度
t0=[1/fs:1/fs:N/fs];
t01=t0;
t=t0+rand(1,size(t0,4))/fs-1/fs;
%v=0.4*randn(size(t0,1),size(t0,2));
t1=[zeros(1,500) t(501:800) zeros(1,N-800)];

S=0.2*t+0.8*sin(2*pi*150*t1)+0.8*sin(2*pi*1250*t)+0.8*sin(2*pi*1950*t);
figure(1)%%原信号
subplot(2,1,1),plot(t,S,'-o')
title('非平稳信号(a)');
xlabel('时间 /s');
ylabel(' 幅 值 ');
subplot(2,1,2),plot(t(1:20),S(1:20),'-o')
title('非平稳信号局部细节(b)');
xlabel('时间 /s');
ylabel('幅值');


Y1=fft(S,N);
angl=angle(Y1);
Ayy1=abs(Y1);
Ayy1=Ayy1/(N/2);

Ayy1(1)=Ayy1(1)/2;
F=([1:N]-1)*fs/N; %换算成实际的频率值



figure(2)%%%快速傅里叶谱
plot(F(1:500),Ayy1(1:500));
%plot(F(1:N/2),Ayy(1:N/2));%显示换算后的FFT 模值结果
title('非均匀采样信号的傅里叶谱图')
aa01=S';
l02=length(aa01);
imf=emd(aa01);
y=imf;
z1=S;
%emd_visu(z1,1:length(z1),y)
%[A,f,tt]=hhspectrum(y);
%[im,tt]=toimage(A,f);
%disp_hhs(im);

figure(3)        %%%        EMD 分解图形

title('非平稳信号的经验模态分解');
for i=1:5
subplot(5,1,i);
plot(y(i,1:200));
end
xlabel('时间 /s');
ylabel('幅值');


[A,fa,tt]=hhspectrum(y);
[E,tt1]=toimage(A,fa,tt,length(tt));
figure(4)%%% 希尔伯特黄边际谱
for k=1:size(E,1)
    bjp(k)=sum(E(k,:))*1/fs;
end
f=(1:N-2)/N*(fs/2); plot(f,bjp);

xlabel('频率 / Hz');
ylabel('幅值');
title('非均匀希尔伯特黄边际谱')

入门

57 麦片

财富积分


50500


0

主题

7

帖子

1

最佳答案
发表于 2018-5-19 17:42:12 | 显示全部楼层
没问题啊,我粘到matlab里运行了一下,有figure(3)和figure(4).

新手

7 麦片

财富积分


050


2

主题

8

帖子

0

最佳答案
 楼主| 发表于 2018-5-19 17:52:18 | 显示全部楼层
skytown 发表于 2018-5-19 17:42
没问题啊,我粘到matlab里运行了一下,有figure(3)和figure(4).

可我这就不行啊,你改其他地方了吗,

入门

57 麦片

财富积分


50500


0

主题

7

帖子

1

最佳答案
发表于 2018-5-19 20:31:30 | 显示全部楼层
并没有修改,你是调EMD函数报错了吗? 看一看imfs 分量是不是正常的?

新手

7 麦片

财富积分


050


2

主题

8

帖子

0

最佳答案
 楼主| 发表于 2018-5-21 20:09:36 | 显示全部楼层
skytown 发表于 2018-5-19 20:31
并没有修改,你是调EMD函数报错了吗? 看一看imfs 分量是不是正常的?

imfs分量是什么

入门

57 麦片

财富积分


50500


0

主题

7

帖子

1

最佳答案
发表于 2018-5-22 09:49:37 | 显示全部楼层
imf=emd(aa01); 利用模态分解EMD生成的分量imf
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

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