# Undefined function or variable in a POD matlab code

조회 수: 9(최근 30일)
Hussein Kokash 2022년 12월 22일
댓글: Hussein Kokash 2022년 12월 23일
Hello all,
I am trying to run the following code:
%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.
n_snapshots = size(files,1);
for j=1:n_snapshots
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
fclose(fid);
end
%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;
end
PhiNor = sqrt(PhiNor);
phix(:,j)= phix(:,j)/PhiNor;
phiy(:,j)= phiy(:,j)/PhiNor;
end
%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;
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);
fclose(PhiOut);
end
% 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일
Moved: Jan 2022년 12월 22일
A strange detail:
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
and provide the correct folder as input. Then consider folder with and without trailing file separator:
##### 댓글 수: 4표시 이전 댓글 수: 3숨기기 이전 댓글 수: 3
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.

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

### 범주

Find more on Loops and Conditional Statements in Help Center and File Exchange

R2018b

### Community Treasure Hunt

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

Start Hunting!