Undefined function or variable in a POD matlab code

조회 수: 12 (최근 30일)
Hussein Kokash
Hussein Kokash 2022년 12월 22일
댓글: Hussein Kokash 2022년 12월 23일
Hello all,
I am trying to run the following code:
function VelocityDistributionPOD (SnapshotsAddress)
%Method of Snapshots
%Section 1 -­‐ Input snapshots
%Each snapshot (txt file) contains four columns. The first two columns are the velocity
%distribution grid point coordinates for x and y direction, respectively. The last two columns
%are u and v velocities, respectively.
SnapshotsAddress = pwd;
files = dir([SnapshotsAddress,'*.txt']);
n_snapshots = size(files,1);
for j=1:n_snapshots
fid = fopen([SnapshotsAddress,files(j).name], 'r');
data = fscanf(fid,'%f %f %f %f',[4,inf]);
x = data(1,:); % x coordinate
y = data(2,:); % y coordinate
U(j,:) = data(3,:); % u velocity
V(j,:) = data(4,:); % v velocity
%Section 2 -­‐ Compute spatial correlation matrix C
c1 = U*U';
c2 = V*V';
C = (c1+c2)/n_snapshots;
%Section 3 -­‐ Solve the eigenvalue problem: C * EigenVector = EigenValue * EigenVector
[beta, lmd] = svd(C);
%Section 4 -­‐ Calculate basis functions
phix = U'*beta;
phiy = V'*beta;
% Normalize basis functions
GridNum = size(x,2);
for j=1:n_snapshots
PhiNor = 0;
for i=1:GridNum
PhiNor = PhiNor + phix(i,j)^2 + phiy(i,j)^2;
PhiNor = sqrt(PhiNor);
phix(:,j)= phix(:,j)/PhiNor;
phiy(:,j)= phiy(:,j)/PhiNor;
%Section 5 -­‐ Calculate coefficient
TimCoeU = U*phix;
TimCoeV = V*phiy;
TimCoe = TimCoeU + TimCoeV;
%Section 6 -­‐ Export basis functions
for a=1:n_snapshots
FilNamPhi = 1000+a;
PhiOut = fopen([SnapshotsAddress,num2str(FilNamPhi),'.txt']', 'wt');
fprintf(PhiOut, '#DaVis 7.2.2 2D-­‐vector 16 145 145 "position" "mm" "position" "mm" "velocity" "m/s"\n');
phia = [x;y;phix(:,a)';phiy(:,a)'];
fprintf(PhiOut, '%20.9f %20.9f %20.9f %20.9f\n',phia);
% Write coefficients into excel file
I have 3 .txt files in the same directory but it seems whenever I try to run I get the following error:
Undefined function or variable 'U'.
Error in VelocityDistributionPOD (line 20)
c1 = U*U';
I have tried to change the way to define the directory and reading the .txt files, couldn't get it to work.
Any ideas?, thank you!
Code reference:
Chen, H., Reuss, D. L., Hung, D. L., & Sick, V. (2013). A practical guide for using proper orthogonal decomposition in engine research. International Journal of Engine Research, 14(4), 307-319.

채택된 답변

Jan 2022년 12월 22일
이동: Jan 2022년 12월 22일
A strange detail:
function VelocityDistributionPOD (SnapshotsAddress)
SnapshotsAddress = pwd;
The folder name provided as input is overwritten. Why?
If the current folder does not contain txt files, U is not created. Then files = dir([SnapshotsAddress,'*.txt']); is empty and the loop with the import is not entered.
Remove this line
SnapshotsAddress = pwd;
and provide the correct folder as input. Then consider folder with and without trailing file separator:
files = dir(fullfile(SnapshotsAddress, '*.txt'));
  댓글 수: 4
Jan 2022년 12월 23일
편집: Jan 2022년 12월 23일
What is the contents of the variable SnapshotsAddress? How do you provide the name of the folder, if it is neither a string nor a char vector?
"txt files are also within the directory!" - Matlab's error message tells clearly, that there are no txt files in the current folder.
Hussein Kokash
Hussein Kokash 2022년 12월 23일
You are right Jan, it seems that they have not included what are the contents of the variable SnapshotsAddress. I will look further into it.
Thank you for your time.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)


Help CenterFile Exchange에서 Convert Image Type에 대해 자세히 알아보기




Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by