计算波形个数,通常要假定一条基线,基线以上为峰,基线以下为谷。
通常用时间序列平均值为基线 0。
然后 用 上跨 0 的方法判断 “进峰”,或下跨 0 的方法判断 “进谷”。
例如,海浪。
int n_wave(double y, int n)
{
double mean=00;
int N=0;
for (i=0;i<n;i++) mean = mean + y[i];
mean = mean / n; //得平均值
for (i=0;i<n;i++) y[i] = y[i] - mean; // 扣去平均值
for (i=0;i<n-1;i++){
if (y[i+1] > 0 && y[i] <= 0 ) N++; // 上跨 0 则得1个峰
}
return N;
}
==================
工程实用时,还可以考虑一个 或值 dy (或字 是 门字头,里面一个 或),
也就是 y > dy 才算 进峰,y < -dy 才算 进 谷。-dy 到 dy 之间 处理为 0 。
上跨0和下跨0得到的波的个数在波形很不规则时会有一点差。海浪波谱分析里一般以下跨0为准。
像你这种波形像似风增水和波浪的叠加,也可以 用 滤波方式,消去 倾斜趋势 后再统计峰的个数。
另外,像你这种波形,波形尾部 的 “坏数据”需要截 去后,再作统计计算。
这些都是锦上添花。
clc
clear
x=[0,0,0,0,0,0,0,0,1];
h=[1,0,-1,0,0,0,0,0,0];
y=conv(x,h);
figure(1);
stem(linspace(0,length(x)-1,length(x)),x)
figure(2);
stem(linspace(0,length(h)-1,length(h)),h)
figure(3);
stem(linspace(0,length(y)-1,length(y)),y)
这样的
1、在打开的ie浏览器窗口右上方点击齿轮图标,选择“Internet选项”,如下图所示:
2、在打开的Internet选项窗口中,切换到安全栏,在安全选卡中点击“自定义级别”,如下图所示:
3、在“安全设置-Internet 区域”界面找到“Java 小程序脚本”、“活动脚本”,并将这两个选项都选择为“禁用”,然后点击确定,如下图所示:
t=0:0001:1;
f1=sin(10pit)+sin(100pit)+sin(200pit);
f2=sin(200pit)+sin(10pit)-sin(100pit);
figure(1);
plot(t,f1,t,f2);
figure(2);
t=1000(1:512)/1024;
ff1=fft(f1,1024)/1024;
dff1=2abs(ff1(1:512));
ff2=fft(f2,1024)/1024;
dff2=2abs(ff2(1:512));
plot(t,dff1,t,dff2);
选采样频率时注意采样定律和波形的周期(采样频率不低于200hz,周期不小于02s)
yrec=[zeros(1,45000),ones(1,10001),zeros(1,45000)];
>> t=linspace(-4,4,length(yrec));
>> plot(t,yrec),8,
真的是爱你 举报
你好,里面的X3(t)函数图像怎么画啊?
举报 曲中
如果题目说的那个函数,对应于-4到4的数据是yrec 那么我这三句就画出了它的图像 不知道那个pi函数是什么函数
真的是爱你 举报
yrec我也会画,但那个不知道什么符号的电脑不会打出来当它pi吧!反正 X(t)=pi(t)=yrec=[zeros(1,45000),ones(1,10001),zeros(1,45000)]; 然后它要画出 X3(t)=pi(t-1) ; 的图像 麻烦了谢谢,刚刚学不会画啊!! 那我原来画的yret就是-4<=t<4时候pi(t)图像 现在画pi(t-1)只是原来的图像向右移动一个单位 yrec=[zeros(1,45000),ones(1,10001),zeros(1,45000)]; >> t=linspace(-4,4,length(yrec))+1; >> plot(t,yrec) 这样就可以了,MATLAB 菜鸟怎么用matlab画出这个函数的波形图像啊
yrec=[zeros(1,45000),ones(1,10001),zeros(1,45000)];
m序列是最长线性反馈移位寄存器序列的简称。它是由带线性反馈的移存器产生的周期最长的序列。
序列的产生
从上图可以看出,先设置初始状态,之后根据框图的原型来进行移位,进行mod2运算。这样最后移位15次后又回到初始状态(1,0,0,0)。所以除了全零状态,一共可以用15种。
一般来说,一个n级线性反馈移存器可能产生的最长周期等于2^n-1
线性反馈移位寄存器原理方框图
接下来是matlab代码
close all; clear all; clc;
fb=200000;
upsample_NUM=20; %每个符号的采样点数目
BIT_NUM=520;
load RC_LPFmat;
close all为关闭所有窗口,clear all为清除所有变量,clc清除命令
这里加载了一个LPF文件。
下面的公式可以作为依据直接产生m序列:
imagepng
%产生m序列
%m序列本原多项式:x^3+x+1, x^4+x+1, x^5+x^2+1,x^6+x+1, x^7+x^3+1
% g3=[0 1 1];
% g4=[0 0 1 1];
% g5=[0 0 1 0 1];
% g6=[0 0 0 0 1 1];
% g7=[0 0 0 1 0 0 1];
g8=[0 0 0 1 1 1 0 1];
这里的要求是2的8次方的m序列,所以m的本原多项式可以得出。g8为特征多项式表示的数组模式,就相当于反馈系数cof,注意一开头的都是0;
%下面产生m=8的序列
m=length(g8);
N=2^m-1;
register=[zeros(1,m-1) 1]; %移位寄存器的初始状态
new_register=zeros(1,m);
m_seq_out8=zeros(1,N+1);
m_seq_out8(1)=register(m);
for i=2:N
new_register(1)=mod(sum(g8register),2); %移存器与反馈系数进行模2加,更新移存器第1个数
for j=2:m
new_register(j)=register(j-1); %更新移存器其他数
end
register=new_register;
m_seq_out8(i)=register(m); %输出
end
m_seq_out9=2m_seq_out8-1; %双极性变换
seq_byte=zeros(1,32); %32字节,每个字节8bit,m序列被存放在该32字节中
产生m=8的序列,当然N=2^m-1,这是最长周期,设置移位寄存器的初始状态,m-1列的0,最后是1,应该是[00000001],即a7为1,其他为0。
接下来的循环语句就是更新移存器,定义了新的变量new_register保存新的数据,最后返还给register。最后m序列数据都被存在32个字节中。
for i=1:32
for j=1:8
seq_byte(i)=seq_byte(i)2;
if m_seq_out8((i-1)8+j)==1
seq_byte(i)=seq_byte(i)+1;
end
end
end
data1=zeros(1,20length(m_seq_out9)); %将采样率扩展20倍,每个bit对应20个样值
for i=1:length(m_seq_out9)
for j=1:20
data1(20(i-1)+j)=m_seq_out9(i);
end
end
data2=[data1,data1,data1,data1];
data3=convn(data2,LPF1); %LPF1为低通滤波器,对应抽样率为(20200KSPS=4 MSPS)
i=1:length(data3);
figure;
plot(i,data3);
接下来的语法嵌套for循环,最后将data和LPF进行卷积,也就是说在频域进行相乘,这时候会出现“吉布斯”效应,就是低通滤波器产生的峰值谷值会比一跌个85%左右,所以产生了这样的波形。
以上就是关于设计一个程序(c++,matlab都可以)计算出普通类似正弦波的波形的波峰的个数全部的内容,包括:设计一个程序(c++,matlab都可以)计算出普通类似正弦波的波形的波峰的个数、简单matlab题目 画x[n] y[n] h[n] 波形图 求程序、通过编写matlab程序得到DSB的时域波形等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)