m files as Function Inputs !!
조회 수: 6 (최근 30일)
이전 댓글 표시
Dear all, I have several files with real data representing signals and in each file I draw the kernel estimate function for the data. I have another m file to calculate the delay so I want the two parameters for the delay function to be any signal from the files I created so when I runi it using the command I can choose any two signals and It will calculate the delay.. Not sure how to pass the two files as arguments.How can I in the xcorr argument say two different data?
function d = delayMethod(filename1,filename2)
data = importdata(filename);
[Rxx, lags] = xcorr(data, data);
[Y, delay] = max(Rxx);
lags(d)
end
Thanks, Susan
댓글 수: 2
Fangjun Jiang
2011년 8월 19일
Is your file a .m file or .mat file? Your title says .m file. Answers below assume .mat file.
If your file is .m file, then the variable name 'data' is dependent on the code inside the .m file.
채택된 답변
Fangjun Jiang
2011년 8월 19일
function d = delayMethod(filename1,filename2)
eval(filename1);
eval(filename2);
%data1 and data2 shall be whatever the related variable name
[Rxx, lags] = xcorr(data1, data2);
[Y, delay] = max(Rxx);
lags(d)
call it through
delayMethod('work1','work2');
I am not sure what lags(d) means though!
댓글 수: 8
Fangjun Jiang
2011년 8월 19일
I have no idea what is inside your work1.m. You'll have to do whatever is necessary to not to make the plot. Regarding the changing variable names, that is something you have to deal with based on your programming structure. The best I can suggest is to make your work1.m also a function with return argument so you can do like data1=work1;data2=work2; But then you'll have to modify your delayMethod() too. Anyway, there are ways to deal with it. You just need to plan ahead and deal with it one at a time.
추가 답변 (3개)
Sean de Wolski
2011년 8월 19일
d = delayMethod('file1.mat','file2.mat');
calling something that uses the inputs:
function d = delayMethod(filename1,filename2)
data1 = importdata(filename1);
data2 = importdata(filename2);
[Rxx, lags] = xcorr(data1, data2);
[Y, delay] = max(Rxx);
lags(d)
end
Paulo Silva
2011년 8월 19일
function d = delayMethod(filename1,filename2)
data1 = importdata(filename1);
data2 = importdata(filename2);
[Rxx, lags] = xcorr(data1, data2);
[Y, delay] = max(Rxx);
lags(d)
end
댓글 수: 12
Fangjun Jiang
2011년 8월 19일
Yeuk! You need to do it differently! It is poor programming but just get you through!
Sean de Wolski
2011년 8월 19일
Paulo, I know!
I posted mine, and when it returned yours was there, with identical recommendations. We've been brainwashed by the forum!
Susan
2011년 8월 19일
댓글 수: 1
Fangjun Jiang
2011년 8월 19일
You really really need to go back to the basics of MATLAB. You don't have a clue of what you are doing after so many questions.
If you name the variable the same as "X" for work2.m and work3.m, then when you run delayMethod('work2','work3'), it is going to run work2 first, then run work3, the X variable is over-written. xcorr(X,X) is calculate the correlation of X itself from work3. If you switch the order, it is going to calculate the correlation of X itself from work2.
If you name the variable Y for work2 and X for work3, xcorr(Y,X) will be the same even if your switch the order delayMethod('work2','work3'), or delayMethod('work3','work2').
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!