У меня вопрос, о котором я слишком заинтересован, предположим, что у меня есть два M-файла в matlab, в первом из которых я описал следующую функцию для вычисления разностей пиков и пиковиспользовать вложенные функции в M-файле MATLAB
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
и второй М-файл у меня есть код для описания синусоидальной модели для данной выборки данных
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
мой вопрос заключается в том, чтобы объединить его решение вместе? один будет просто создать два М-файла в папку, затем вызовите функцию из одного M-файла и выполнили операцию с заданным вектором и ge t result, а затем вызывать вторую функцию из другого M-файла на заданный результат и, наконец, получить то, что мы хотим, но я хотел бы построить его в одном большом M-файле, в C++, в java, мы можем создавать классы, но я не уверен, что мы можем сделать то же самое в 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
я использовал findpeaks встроенную функцию в MATLAB, но я получаю следующее сообщение об ошибке
generate(1000,50,50)
Undefined function 'generate' for input arguments of type 'double'.
также меня интересует, что было бы эффективной частотой дискретизации, чтобы избежать alliasing?
Если вы стремитесь писать объектно-ориентированные коды внутри MATLAB (как в Java и C++), вы можете легко достигнуть этого! – fpe