Storing index logic in new column per iteration
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
For each idx variable, I want the values to be stored in a new column per iteration. Right now, each idx is being overwritten per loop iteration. I do not want the idx logic to be stored in one column with new rows; each iteration should make a new column in the idx logic field.
for j = 2:length(fieldnames(data))
for i = 1:(length(fieldnames(data))-1)
firstoutput = data.(sprintf("variables_%d", i));
secondoutput = data.(sprintf("variables_%d",j));
data.idx2 = ismember(firstoutput(:,2),secondoutput(:,2));
data.idx3 = ismember(firstoutput(:,3),secondoutput(:,3));
data.idx4 = ismember(firstoutput(:,4),secondoutput(:,4));
end
end
0 comentarios
Respuestas (1)
Timothy
el 2 de Nov. de 2021
Editada: Timothy
el 2 de Nov. de 2021
You would need to use i and/or j, depending on how you are thinking of an "iteration" for your algorithm, as indices into your data.idx# fields. If i and/or j are large, I would also recommend pre-allocating them as a logical/boolean vector/matrix, as appropriate for your definition of iteration.
For example, it seems like you would want to store all combinations of i and j, based on your code so you might do something like this:
L = length(fieldnames(data));
data.idx2 = zeros(L-1, L-1, 'logical');
data.idx3 = data.idx2;
data.idx4 = data.idx2;
for j = 2:L
for i = 1:L-1
firstoutput = data.(sprintf("variables_%d", i));
secondoutput = data.(sprintf("variables_%d",j));
data.idx2(i,j) = ismember(firstoutput(:,2),secondoutput(:,2));
data.idx3(i,j) = ismember(firstoutput(:,3),secondoutput(:,3));
data.idx4(i,j) = ismember(firstoutput(:,4),secondoutput(:,4));
end
end
7 comentarios
Timothy
el 3 de Nov. de 2021
You're welcome, were you able to get something working the way you wanted?
Ver también
Categorías
Más información sobre Characters and Strings en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!