Use string to define variable
이전 댓글 표시
Hello guys!
I am looking for a way to name a variable with a string name that will be changing according to the T and V values
My code is the following:
-------------------------------
T=15; % input variable T
V=1; % input variable V
load('FRF_T15_V1.mat')
load('FRF_T15_V2.mat')
load('FRF_T15_V3.mat')
formatSpec = 'FRF_T%d_V%d';
filename = sprintf(formatSpec,T,V);
x=eval(filename);
XP=(x{3,3});
save ('XP,'XP')
-----------------------------
I would like for variable XP to be assigned according to the input values of T and V, e.g.,
FRF_T15_V1_XP=(x{3,3});
And then save it as
save (' FRF_T15_V1_XP,' FRF_T15_V1_XP ')
Thanks in advance for your help!
Kind regards,
Hugo
채택된 답변
추가 답변 (3개)
Steven Lord
2025년 8월 9일
1 개 추천
Can you dynamically create variables with numbered names like x1, x2, x3, etc.? Yes.
Should you do this? The general consensus is no. That Discussions post explains why this is generally discouraged and offers several alternative approaches.
There are many ways to do this. Here's one that shows how to make the format of the T and V values have the same width and will sort based on the value of T in the directory. Just change the '%n.n' to the largest width of your number range:
% for the character array version
fname = @(t,v) ['FRF_T' num2str(t,'%3.3d') '_V' num2str(v,'%2.2d') '_XP'];
for T=[1 3 5]
for V=1:2
fprintf(1,'%s\n', fname(T,V));
end
end
% for the string version
strfname = @(t,v) strcat("FRF_T", num2str(t,'%3.3d'), "_V", num2str(v,'%2.2d'), "_XP");
for T=[1 3 5]
for V=1:2
fprintf(1,'%s\n', strfname(T,V));
end
end
카테고리
도움말 센터 및 File Exchange에서 Structures에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!