Matlab仿真出现In an assignment A(I) = B, the number of elements in B and I must be the same.

>> clear all; %清寄存器值 clf; %清屏
N=256; %数据点数
fs=10000; %采样频率
dt=1/fs; %采样时间间隔
tt=0.:dt:dt*(N-1);
dis=(rand(size(tt))); %随机噪声
for k=1:N;
f1=3000; %信号1频率
f2=1000; %信号2频率
y(k)=sin(2*pi*f1*k*dt)+sin(2*pi*f2*k*dt)+dis; %产生合成信号
end
lp=3500; %截止频率
wn1=2*lp/fs; %函数的参数
[z1,p1,k1] = CHEBY1(3,0.5,wn1); %滤波器的极零点表示
[b1,a1] = CHEBY1(3,0.5,wn1); %滤波器的传递函数表示
b1=b1/(8*1.0711); %将参数按比例缩小
a1=a1/(8*1.0711); %为DSP程序做准备,MATLAB中不需要

yy1=filter(b1,a1,y); %滤波

y=fft(y,N); %将原始信号做FFT变换
pyy=y.*conj(y); %做功率谱分析
f=(1:(N/2-1));
for i=1:N/2-1;
f(i)=f(i)*fs/N;
end
figure(1);

plot(f,pyy(2:N/2)) %画出原始信号的频谱图

y=fft(yy1,N); %将滤波后数据做功率谱分析
pyy=y.*conj(y);
f=(1:(N/2-1));
for i=1:N/2-1;
f(i)=f(i)*fs/N;
end
figure(2);
plot(f,pyy(2:N/2)); %画出滤波后信号的频谱图

In an assignment A(I) = B, the number of elements in B and I must be the same.

第1个回答  2013-05-02
第7-11行的循环语句里面出错
for k=1:N;
f1=3000; %信号1频率
f2=1000; %信号2频率
y(k)=sin(2*pi*f1*k*dt)+sin(2*pi*f2*k*dt)+dis; %产生合成信号
end
应该改为
for k=1:N;
f1=3000; %信号1频率
f2=1000; %信号2频率
y(k)=sin(2*pi*f1*k*dt)+sin(2*pi*f2*k*dt)+dis(k); %产生合成信号
end
就是把dis改为dis(k).原因你自己应该很清楚吧。来自:求助得到的回答
第1个回答  2013-05-02
表示维数不对追问

我按照别的人提供的解决方法后,又出现新的问题,你能帮我仿真下看看吗

相似回答
大家正在搜