GG西瓜 2022-09-01 15:15 采纳率: 66.7%
浏览 35
已结题

关于代码错误,如何解决?(语言-c语言)

要制作一个二维除噪的程序
遇到了下面的问题,希望得到解决
中间有省略

int main()
{
float dt, dx, h, c, x, t, win[N] = { 0.1,0.2,0.4,0.2,0.1 };
int nt, nx, nv, iv, it, ix, N2 = N / 2;
float **data = NULL;
float **denoised;
float *w;

w = read_1Dfloat("ricker.txt", &nv);
data = malloc_2D(nx, nt);
denoised = malloc_2D(nx, nt);
for (ix = 0; ix < nx; ix++)
{
    x = ix * dx;
    t = sqrt(x*x + 4 * h*h) / c;
    it = (int)(t / dt + 0.5);
    for (iv = 0; iv < nv; iv++)
        data[ix][it + iv] = w[iv];
}
for (ix = 0; ix < nx; ix++)
{
    float *noise;
    noise = randnoise(nt, 0.1);
    for (it = 0; it < nt; it++)
        data[ix][it] += noise[it];
    free(noise);
}
write_2Dfloatbin("prestack_noise.bin", data, nx, nt);
free(w);

for (ix = 0; ix < nx; ix++)
    for (it = 0; it < N2; it++)
        denoised[ix][it] = data[ix][it];
for (ix = 0; ix < nx; ix++)
    for (it = nt - N2; it < nt; it++)
        denoised[ix][it] = data[ix][it];

float *us = NULL;
us = (float *)malloc(sizeof(float) * nt);
for (it = 0; it < nt; it++)
    us[it] = 0.;
complex *tmp;
for (ix = 0; ix < nx; ix++)
{
    for (it = 0; it < nt; it++)
        us[it] = data[ix][it];
    tmp = conv(us, nt, win, N);                           该行有问题
    for (it = N2; it < nt - N2; it++)
    {
        denoised[ix][it] = tmp[it - N2 + N - 1];
    }
}

write_2Dfloatbin("prestack_denoised", denoised, nx, nt);

free(us);
free(data);
free(denoised);
return 0;

}

float *conv(float *x, int nx, float *h, int nh)
{
float *y = NULL;
int ny = nx + nh - 1, iy, ix;
y = (float *)malloc(sizeof(float)*ny);
for (iy = 0; iy < ny; iy++)
y[iy] = 0.;

for (iy = 0; iy < ny; iy++)
{
    for (ix = 0; ix < nx; ix++)
    {
        if (iy - ix >= 0 && iy - ix < nh)
            y[iy] += x[ix] * h[iy - ix];
    }
}
return y;

}

img


error C2440: '=' : cannot convert from 'float *' to 'struct comp *'
error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'struct comp' (or there is no acceptable conversion)

  • 写回答

3条回答 默认 最新

  • 快乐鹦鹉 2022-09-01 15:24
    关注

    conv函数返回的是float *
    你调用的时候传递给了complex *

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月9日
  • 已采纳回答 9月1日
  • 创建了问题 9月1日

悬赏问题

  • ¥15 FOC simulink
  • ¥15 咨询一下有关于王者荣耀赢藏战绩
  • ¥100 求购一套带接口实现实习自动签到打卡
  • ¥50 MacOS 使用虚拟机安装k8s
  • ¥500 亚马逊 COOKIE我如何才能实现 登录一个亚马逊账户 下发新 COOKIE ..我使用下发新COOKIE 导入ADS 指纹浏览器登录,我把账户密码 修改过后,原来下发新COOKIE 不会失效的方式
  • ¥20 玩游戏gpu和cpu利用率特别低,玩游戏卡顿
  • ¥25 oracle中的正则匹配
  • ¥15 关于#vscode#的问题:把软件卸载不会再出现蓝屏
  • ¥15 vimplus出现的错误
  • ¥15 usb无线网卡转typec口