I want to loop for files in workspace

8 ビュー (過去 30 日間)
Chuchu Debebe
Chuchu Debebe 2022 年 5 月 12 日
コメント済み: Chuchu Debebe 2022 年 5 月 13 日
Dear all,
I have a lot of data that I imported into my workspace. Let's say I have data1, data2,... and dataN in my workspace. For example, I want to get length(data1), length(data2),... and length(dataN) automatically using a loop. Do I have any way to do that?
  1 件のコメント
Stephen23
Stephen23 2022 年 5 月 12 日
"Let's say I have data1, data2,... and dataN in my workspace."
And that is the start of your problems: badly-designed data with pseudo-indices forced into the variable names. Accessing numbered variable names in a loop is one way that beginners force themselves into writing slow, complex, inefficient, buggy code that is difficult to debug:
Much better data design would use one array, then you could use simple and efficient indexing, just like MATLAB is designed for.

サインインしてコメントする。

採用された回答

Stephen23
Stephen23 2022 年 5 月 12 日
"Let's say I have data1, data2,... and dataN in my workspace."
Lets assume that you did not name them all by hand, but instead that you LOADed them one-by-one from some MAT files. In which case, that is the correct place to fix the badly-designed data, e.g. renaming the variable in each MAT file to use exactly the same name, which would make it much easier to write simple, efficient, robust code to process your data.
Remember to always LOAD into an output variable!
If you cannot rename the MAT file vairiables and there is exactly one variable per MAT file, then we can LOAD them like this to avoid having lots of ugly numbered variable names in the workspace:
P = 'absolute or relative path to where the files are saved';
S = dir(fullfile(P,'*.mat'));
N = numel(S);
C = cell(1,N);
for k = 1:N
F = fullfile(P,S(k).name);
C(k) = struct2cell(load(F));
end
V = cellfun(@numel,C)
Simpler and much more efficient than trying to mess around with dynamic variable names.
  7 件のコメント
Stephen23
Stephen23 2022 年 5 月 13 日
@Chuchu Debebe: fixed now, try it again.
Chuchu Debebe
Chuchu Debebe 2022 年 5 月 13 日
Thank you, sir. It worked!!

サインインしてコメントする。

その他の回答 (1 件)

KSSV
KSSV 2022 年 5 月 12 日
s = whos ;
for i = 1:length(s)
s(i).size
end

カテゴリ

Help Center および File ExchangeStartup and Shutdown についてさらに検索

製品


リリース

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by