For loop error: unable to perform assignment because left and right sides have a different number of elements

2 visualizaciones (últimos 30 días)
I am struggling to create a forloop which reduces the following task into a few lines of code:
resp1 = squeeze(resp(:,1,:));
resp2 = squeeze(resp(:,2,:));
resp3 = squeeze(resp(:,3,:));
resp4 = squeeze(resp(:,4,:));
resp5 = squeeze(resp(:,5,:));
resp6 = squeeze(resp(:,6,:));
resp7 = squeeze(resp(:,7,:));
imp_level(iter_rep-num_draw_discard,:,:) = resp1;
imp_slope(iter_rep-num_draw_discard,:,:) = resp2;
imp_curv(iter_rep-num_draw_discard,:,:) = resp3;
imp_unrate(iter_rep-num_draw_discard,:,:) = resp4;
imp_pce_ch(iter_rep-num_draw_discard,:,:) = resp5;
imp_tcu_ch(iter_rep-num_draw_discard,:,:) = resp6;
imp_effr(iter_rep-num_draw_discard,:,:) = resp7;
I've tried the following but got an error
variables = {'level', 'slope', 'curv', 'unrate', 'pce_ch','tcu_ch', 'effr' };
range = linspace(1,size(variables,2),7);
% betas_exog is a (324 x 7) dimension matrix
for i = 1:size(betas_exog, 2)
resp_range(i) = squeeze(resp(:,i,:));
imp_variables{i}(iter_rep-num_draw_discard,:,:) = resp(i)
end
I would appreciate your help in fixing the error and creating a workable for loop.
  6 comentarios
J. Alex Lee
J. Alex Lee el 28 de Dic. de 2020
Are you just trying to re-order the dimensions? Or would doing that first let you index more easily for whatever you are trying to do?
matlabuser
matlabuser el 30 de Dic. de 2020
i was trying to just create a set of variables as defined above. To clarify, num_draw_discard is a scaler = 3000, iter_rep = 15,000.

Iniciar sesión para comentar.

Respuesta aceptada

Gaurav Garg
Gaurav Garg el 29 de Dic. de 2020
Hi,
You can plan to use either Structure array, or a Cell array. You could have also constructed variable name from string, however, the potential risks for it have already been pointed out, about which you can also look here.
The error which you are getting is usually caused when the dimensions of the assigner and the assignee variables are not the same/equal.
As the last option, you can look at Map Containers. They are the objects with keys that index to values, and at the same time, the keys need not be integers

Más respuestas (0)

Categorías

Más información sobre Creating and Concatenating Matrices 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!

Translated by