私はCで移動平均コードをしようとしています、私はすでにこれをmatlabで行い、動作します。私は手動でC言語にmatlabスクリプトを変換しましたが、私はいくつかの問題を抱えています。Movin Cプログラムへの平均conveting matlabスクリプト
#include <stdio.h>
#include <stdlib.h>
int main()
{
int m = 16; // MEDIA LENGTH
double x[]=0; // X VECTOR = 0
double coef[]=0; // COEF VECTOR = 0
double i; // FOR COUNT VARIABLE
double n; // FOR COUNT VARIABLE
double itera; // LENGTH OF THE INPUT FILE
double aux; // AUX VARIABLE TO MAKE THE SUM
double y[]=0; // AUX VECTOR TO RECEIVE X VECTOR
double saida[]=0; // OUTPUT VECTOR
FILE *arq; // POINTER TO THE FILE
for (i = 0; i < m; i++) {
coef[i] = 1/m;
}
arq = fopen("sweep_100_3400.pcm", "rb");
if (arq == NULL)
{
printf("ERROR WHILE OPENING THE FILE\n");
return;
}
fread(*x,sizeof(double),m,arq);
fclose(arq);
itera = size_t(x);
for (i=0; i < itera; i++) {
y[0] = x[i];
aux=0;
for (n=0; n<m; n++){
aux= aux + coef[n] * y[n];
}
saida[i]=aux;
for (n=m; n <2; n--){
x[n] = x[n-1];
}
}
arq=fopen("saida_medial_movel_c.pcm","wb");
fwrite(*saida, sizeof(double),itera,arq);
fclose(arq);
}
私のコンパイラは、変数の宣言でエラーが表示されます。私は、関数freadとのfopenを使用しようとしていますとき
error: invalid initializer
とエラー:
error: incompatible type for argument 1 of 'fread'
誰かがそれが何であるかを知っていますか? MathWorks社のMATLABでのスクリプトの下
:
%MOVING AVERAGE EXAMPLE SCRIPT
clear all;
close all;
clc;
% DEFINES MEDIA LENGTH
m = 16;
%VECTOS EQUAL ZERO
x = zeros (m,1);
coef = zeros (m,1);
%INITIALIZE VECTOR
for j = 1 : m,
coef (j,1) = 1/m;
end
%READ INPUT FILE
fid = fopen ('sweep_100_3400.pcm','rb');
s = fread (fid, 'int16');
fclose(fid);
subplot(2,1,1);
plot(s);
grid on;
title('ENTRADA DO FILTRO');
%PROCESS
itera = length(s);
sav_y = zeros (itera, 1);
%EXECUTE PROCESS
for j = 1 : itera,
x(1,1) = s (j,1);
%PRODUCTS SUM
y=0;
for n = 1 : m,
y = y + coef(n,1) * x(n,1);
end
sav_y(j,1) = y;
%SHIFT THE VECTOR
for n = m: -1 : 2,
x (n,1) = x(n-1,1);
end
end
%PLOT OUTPUT
subplot (2,1,2);
plot (sav_y);
grid on;
title('SAÍDA DO FLITRO');
%SAVE THE OUTPUT IN ANOTHER FILE
fid = fopen('saida_mm_manual.pcm','wb');
fwrite(fid,sav_y,'int16');
fclose(fid);
更新:デ・ファイルを読み書きするために、絶対パスして、以下の回答を使用。
パスは次のとおりです。それはコンパイルので、私はあなたのソースを修正した
ソース、コンパイル、配列の割り当てには多くのエラーがあります。私は時間があれば固定版を投稿しようとします。 –
ありがとう、私はC言語でプログラミングして以来、長い時間が経ちました。 – Mutante