
function dy=vdp1000(t,y) % 建立函数,函数名字是vdp,t,y表示输入值,dy是输出值
dy=zeros(2,1); %建立空矩阵 21的0矩阵
dy(1)=y(2); %第一个微分方程
dy(2)=1000(1-y(1)^2)y(2)-y(1);%第二个微分方程
建立m文件的作用就是在[T,Y]=ode15s('vdp1000',[0 3000],[2 0]); 调用这个vdpm函数。
如不明白请留言
大概回答一下,整个程序的基本结构
1,模拟噪声信号。在程序里 xr 为初始信号,b 为噪声,x 即为叠加噪声的信号 (这个程序里只有加性噪声,其他情况下有时还可能有乘性噪声,可随机应变),x也即为之后滤波的输入信号 (维度均为200)这是第一个for循环做的事情,之后再初始化各个矩阵、向量就不用多说了。
2,滤波。滤波的基本思想都是将需要处理的信号乘上一个滤波矩阵,之后得到滤波后的信号,其目的是尽可能使滤波后的信号初始信号(即xr)接近,即达到了除噪还原信号的目的。
h 为滤波矩阵,y 为滤波后的信号,e为误差。这是第二个 for 循环中所作的滤波部分
自适应滤波就是可以根据滤波结果将误差返回到输入端,对滤波器进行校正,以达到更好的滤波效果,减小误差。这是第二个 for 循环中的另一部分,校正滤波器。
Cxx为误差相关矩阵,g 是增益矢量。
g(i,:)=(Cxxx(i-n+1:i)'/(1+x(i-n+1:i)Cxxx(i-n+1:i)'))';
Cxx=Cxx-g(i,:)'x(i-n+1:i)Cxx;
h(i,:)=h(i-1,:)+e(1,i)g(i,:);
这三个语句是在对滤波器进行迭代调整,具体原理就看RLS算法吧
3,最后剩的就是画图,画出初始信号figure2、噪声信号figure1、滤波信号、误差figure3、滤波矢量figure4,之后再画伯德图figure5以及对数图figure6,画图的那些命令就不细说了在help里都可以查到的
希望可以帮到你
clc,clear %这个不解释
for i=1:100 %i为1到100的范围内,每运行一次加1
R=rand(1,12); %R为一个12个元素的行向量,每个元素为随机值,在0~1之间
X(i)=sum(R)-6; %X向量的每个元素等于R的12个元素的和6的差,X为一个有12个数的行向量
end %循环结束
X=X'; %把X向量倒置,变成列向量
m=mean(X) %求X中元素的均值
v=var(X) %求X元素的样本方差
subplot(1,2,1),cdfplot(X)%绘制经验累计分布函数图,显示了一维向量X的累计概率分布F(x)的图形
subplot(1,2,2),histfit(X) % 正态曲线的直方图
h=kstest(X, [X normcdf(X, 0,1)])% %指定累积分布函数为cdf的测试,是否是以X为中心的标准正太分布,测试水平为5%
每句加注释没有必要,应该是你说出哪里看不懂,以便有针对性地讲解。
简单地加一些说明,有问题请追问吧:
% 在指定位置创建窗口,不要工具条
h0=figure('toolbar','none',
'position',[200 150 450 250],
'name','实例08');
% x是横轴数据,余下的是四组纵轴数据
x=91:95;
profits1=[88 75 84 93 77];
profits2=[51 64 54 56 68];
profits3=[42 54 34 25 24];
profits4=[26 38 18 15 4];
% 依次画四个面图,填充色为自定义颜色,边缘色为预定义颜色常量
% 绘图时使用hold避免后面的绘图把前面的冲掉(其实用一个就够了)
area(x,profits1,'facecolor',[05 09 06],
'edgecolor','b',
'linewidth',3)
hold on
area(x,profits2,'facecolor',[09 085 07],
'edgecolor','y',
'linewidth',3)
hold on
area(x,profits3,'facecolor',[03 06 07],
'edgecolor','r',
'linewidth',3)
hold on
area(x,profits4,'facecolor',[06 05 09],
'edgecolor','m',
'linewidth',3)
% 绘图完成后,取消保持状态
hold off
% 前一句设置横坐标格线位置;后一句无必要
set(gca,'xtick',[91:95])
set(gca,'layer','top')
% 使用gtext让用户通过鼠标点击确定显示文字说明的位置
gtext('\leftarrow第一季度销量')
gtext('\leftarrow第二季度销量')
gtext('\leftarrow第三季度销量')
gtext('\leftarrow第四季度销量')
% 横纵座标标记
xlabel('年','fontsize',16);
ylabel('销售量','fontsize',16);
%频域中上抽样的效果
%使用fir2构造一个带限输入序列
clf %清除当前图形窗口图形。
freq=[0 045 05 1] %定义一个14的矩阵freq。
mag=[0 1 0 0] %定义一个14的矩阵mag。
x=fir2(99,freq,mag) %设置滤波器。
%fir2(n,f,m)函数fir2用来设计多通带任意响应FIR滤波器,该滤波器的幅频特性由向量对f和m确定,f为归一化频率向量,m为对应频率点上的幅度。当设计的滤波器在频率为π的幅度响应不是0时,滤波器的阶数n为偶数;
%上面是fir2的简介,来自百度百科。
%求取并画出输入谱
[Xz,w]=freqz(x,1,512,'whole') %求离散系统频响特性。
%关于freqz,可以看>
以上就是关于关于MATLAB程序的解释说明全部的内容,包括:关于MATLAB程序的解释说明、询问matlab一个程序的各个语句什么意思,求讲解。急……、求解释一段matlab代码含义,详细一些的,把每句都解释下最好!谢谢啦!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)