あまりにも興味がある質問があります.matlabに2つのMファイルがあるとします。最初のファイルには、ピークとピークの指数を計算するための次の関数を記述しました
function [peaks,peak_indices] = find_peaks(row_vector)
A = [0 row_vector 0];
j = 1;
for i=1:length(A)-2
temp=A(i:i+2);
if(max(temp)==temp(2))
peaks(j) = row_vector(i);
peak_indices(j) = i;
j = j+1;
end
end
end
2番目のMファイルには、特定のデータサンプルの正弦波モデルを記述するためのコードがあります
function [ x ]=generate(N,m,A3)
f1 = 100;
f2 = 200;
T = 1./f1;
t = (0:(N*T/m):(N*T))';
wn = rand(length(t),1).*2 - 1;
x = 20.*sin(2.*pi.*f1.*t) + 30.*cos(2.*pi.*f2.*t) + A3.*wn;
end
私の質問は、それを組み合わせる方法です.1つの解決策は、2つのMファイルをフォルダーに作成し、1つのMファイルから関数を呼び出し、指定されたベクトルで操作を行い、結果を取得してから、別のMファイルから2番目の関数を呼び出すことです結果が与えられ、最終的に必要なものが得られますが、C ++、Javaで1つの大きなMファイルにビルドしたいと思います。クラスを作成できますが、matlabでも同じことができるかどうかわかりません。助けてください私はすべてを明確にし、find_peaks関数を関数の生成に使用します
更新: さて、コードで行った簡単な変更を示したいと思います
function [ x ] = generate(N,m,A3)
f1 = 100;
f2 = 200;
T = 1./f1;
t = (0:(N*T/m):(N*T))'; %'
wn = rand(length(t),1).*2 - 1;
x = 20.*sin(2.*pi.*f1.*t) + 30.*cos(2.*pi.*f2.*t) + A3.*wn;
[pks,locs] = findpeaks(x);
end
私はmatlabでfindpeaks組み込み関数を使用しましたが、次のエラーが発生しています
generate(1000,50,50)
Undefined function 'generate' for input arguments of type 'double'.
また、アリアシングを回避するための効果的なサンプリングレートは何ですか?