C与MATLAB语言画雷克子波图像(时间域s)

 C:

#include<stdio.h>
#include<math.h>
#define dt 0.001//采样间隔倒是没什么所谓(精度差异)
#define Nt 0.8//横轴线长度(秒s)设置十分有讲究,雷克子波本身就是0.06s(60ms)左右,所以把这个数值设为0.8左右即可。
#define N 81//Nt/dt,样点数
#define fm 35 //雷克子波主频
#define PI 3.1415926
int main(void)
{
	int i;//整形样点数
	double t;//浮点型横轴
	double f[N] = {0};
	FILE *fp;
	fp = fopen("雷克子波图像.xls","w");
	
	for(i=0;i<N+1;i++)
	{
		t = (i-N/2)*dt;//(关于y轴对称所以函数横轴变量t从(0-N/2)*dt开始)
		f[i] =  (1.0-2.0*pow(PI*fm*t,2.0))*exp(-pow(PI*fm*t,2.0));
		fprintf(fp,"%lf\t%lf\n",t,f[i]);
	}

	fclose(fp);
	return 0;
}

MATLAB: 

clear; clc
fm = 400000; %主频
dt = 1e-10; %时间域采样间隔
number = 100000; %采样点数
t = linspace(-5e-6,5e-6,number)';
ricker_t = (1-2*(pi*fm*t).^2) .* exp(-(pi*fm*t).^2);
plot(t,ricker_t,'linewidth', 1.5);
ylim([-1,1.5])
title('Ricker-wavelet(Time domain)');
xlabel('t(ms)');
ylabel('Vlaue');
set(gca, 'LineWidth',1.5,'Fontname', 'times new roman','fontsize',22)

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值