How can I create a 2-term, 1-by-1 string using sprintf?

3 次查看(过去 30 天)
I am using the following code to refer to 4000x15 doubles I have in my workspace, they are named P1-17. When I use the code however, the name becomes a 1x2 char and therefore a variable itself. When I try to use it in the function that's in the loop, it does not refer to the 4000x15 data at all.
Does anyone know how to fix this or do it in another way? I have tried a lot of things but I can't figure this one out.
for j = 1:1:17
filename = (sprintf('%s%d','P',j)) ;
[sgmean] = DataPrep(filename) ;
end
  3 个评论
Stephen23
Stephen23 2022-5-9
"but use one of the alternatives in the documentation you attached?"
You don't need to guess, I already told you which alternative to use: LOAD into an output variable.
Yasmin Ben Azouz
Yasmin Ben Azouz 2022-5-9
@Stephen23 Thank you so much! I am now loading the files into a struct using the code below, but the dimensions of the struct are not cooperating. After one run I get the error 'Subscripted assignment between dissimilar structures.', because only one field is created within a 17x1 struct. I want 17 fields in a 1x1 struct.. Do you have an idea on what I'm doing wrong now??
parts = {'P1.mat', 'P2.mat', 'P3.mat', 'P4.mat', 'P5.mat', 'P6.mat', 'P7.mat', 'P8.mat', 'P9.mat', 'P10.mat', 'P11.mat', 'P12.mat', 'P13.mat', 'P14.mat', 'P15.mat', 'P16.mat', 'P17.mat'} ;
for m = numel(parts):-1:1
S(m,1) = load(parts{m}) ;
end

请先登录,再进行评论。

采纳的回答

Stephen23
Stephen23 2022-5-9
编辑:Stephen23 2022-5-9
Here is a way to import those badly-named variables, assuming exactly one variable per MAT file:
N = 17;
C = cell(1,N);
for kk = 1:N
F = sprintf('P%d',kk);
C(kk) = struct2cell(load(F));
end
Your data are stored in the cell array C, for example the 2nd file:
C{2}
The code would be simpler and more robust if the variable names were exactly the same in every file.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Whos 的更多信息

产品


版本

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by