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

조회 수: 2 (최근 30일)
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
J. Alex Lee
J. Alex Lee 2020년 12월 28일
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 2020년 12월 30일
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.

댓글을 달려면 로그인하십시오.

채택된 답변

Gaurav Garg
Gaurav Garg 2020년 12월 29일
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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by