Storing a vector in a loop each time with a different name
2 ビュー (過去 30 日間)
古いコメントを表示
for k = 1:10
FileName1 = ['EqvStr_',num2str(k),'.csv'];
filename1 =fullfile('E:\ANSYS_FILES\BigKB', FileName1);
A = xlsread(filename1,'A2:E1000');
vectorname = ['a',num2str(k)];
vectorname = A(:,1);
end
disp(a1)
disp(a2)
disp(a3)
disp(a4)
disp(a5)
disp(a6)
disp(a7)
disp(a8)
disp(a9)
disp(a10)
So I am running the above code and MATLAB gives me an error message saying "Undefined function or variable 'a8'". It is weird because it IS showing me the results if I comment out the a8, a9, and a10 lines from the code but gives me the error message if not. There are a 1090 files in the folder in that name format and I am just testing the code with the first 10 but it is showing me this error. Can anyone please help me understand what the problem here is?
2 件のコメント
Stephen23
2018 年 8 月 10 日
"Can anyone please help me understand what the problem here is?"
Bad code design. Much better code design would simply use simpler, more efficient indexing with a cell array, exactly as the MATLAB documentation shows:
What you are doing will force you into writing slow, buggy, complex code which is harder to debug:
採用された回答
James Tursa
2018 年 8 月 10 日
編集済み: James Tursa
2018 年 8 月 10 日
This is not the best way to do this in MATLAB. There are many, many posts on this site explaining why. Instead, you should use cell arrays. E.g.,
A{k} = xlsread(filename1,'A2:E1000');
Then downstream in your code simply use A{k} instead of the a1, a2, etc that you are currently using. See this link:
6 件のコメント
Stephen23
2018 年 8 月 10 日
編集済み: Stephen23
2018 年 8 月 10 日
@Siddhant Chandra: try it and find out: assuming that C does not exist, try this:
C{4} = 1
What does it create?
But your question is actually a good one, because to make the code clear, efficient, and to prevent interference from existing variables you should preallocate the cell array before the loop, like this:
N = 10;
C = cell(1,N); % preallocate!
for k = 1:N
...
C{k} = xlsread(...);
end
Then it is unambiguous what size C has, and what the indexing refers to. Note that the MATLAB documentation clearly shows the cell array being preallocated before the loop:
You can read about array preallocation here:
Using clear is not recommended for this, it is better to preallocate.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Entering Commands についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!