Matlab 赋值的非单例rhs维度多于非单例下标

Matlab 赋值的非单例rhs维度多于非单例下标,matlab,matrix,Matlab,Matrix,我正在尝试编写一个GMM函数。问题是,对于下一个循环,我得到了下一个错误: Assignment has more non-singleton rhs dimensions than non-singleton subscripts. 错误与从这里开始的循环部分有关。在循环的下面是完整的代码。我在网上搜索,我尝试了很多东西,但我真的不明白为什么我会有这个问题。我还检查了包含的每个变量的大小,它们都是(694,1),我非常确定指定的每个变量的大小都是正确的 % for i=1:T-3

我正在尝试编写一个GMM函数。问题是,对于下一个循环,我得到了下一个错误:

Assignment has more non-singleton rhs dimensions than non-singleton subscripts.
错误与从这里开始的循环部分有关。在循环的下面是完整的代码。我在网上搜索,我尝试了很多东西,但我真的不明白为什么我会有这个问题。我还检查了包含的每个变量的大小,它们都是(694,1),我非常确定指定的每个变量的大小都是正确的

% 
for i=1:T-3      
         % g(i,1)=((beta.*((c1(i).^(-alpha)) + (b*beta*(c2(i)).^(-alpha))).*dj(i)) - (b*beta.*(c1(i)).^(-alpha))) - 1;
          a(:,i)=(((beta.*((c1(i).^(-alpha)) + (b*beta*(c2(i)).^(-alpha))).*dj(i)) - (b*beta.*(c1(i)).^(-alpha))) - 1);
          b(:,i)=(((beta.*((c1(i).^(-alpha)) + (b*beta*(c2(i)).^(-alpha))).*dj(i)) - (b*beta.*(c1(i)).^(-alpha))) - 1)*dj(i);      
          c(:,i)=(((beta.*((c1(i).^(-alpha)) + (b*beta*(c2(i)).^(-alpha))).*dj(i)) - (b*beta.*(c1(i)).^(-alpha))) - 1)*consumpt(i);


%     function [q] = Q(param,M,data,cond)

   T = length(data);

  % Population moments
  % [PMvec] = populat0ion_moments(param);
   %sigma = param(2);  
   alpha = param(1);
   beta = param(2);
   b = param(3);
  % c = ( data(3:end,1) + b*(data(2:end-1,1)))./(data(2:end-1,1) + b*(data(1:end-2,1) + b*( data(3:end,1)) + b*(data(2:end-1,1))./(data(2:end-1,1) + b*(data(1:end-2,1)));
   dj= data(2:end-2,2)./data(1:end-3,2);
   cpr = data(1:end-3,1) 
   ctd = data(2:end-2,1)
   ctw = data(3:end-1,1)
   ctw2= data(4:end, 1)

   c1 = (ctw+b.*ctd)./(ctd+b.*cpr);   
   c2 = (ctw2+b.*ctw)./(ctd+b.*cpr);


    consumpt = data(2:end-2,1)./data(1:end-3,1);
   [row,col] = size(cpr);
      djinst = dj(1:row,1);
   %z = [1 consumpt djinst]

    a = zeros(1, 694);
    b = zeros(1, 694);
    c = zeros(1, 694);
   for i=1:T-4

         % g(i,1)=((beta.*((c1(i).^(-alpha)) + (b*beta*(c2(i)).^(-alpha))).*dj(i)) - (b*beta.*(c1(i)).^(-alpha))) - 1;
          a(:,i)=(((beta.*((c1(i).^(-alpha)) + (b*beta*(c2(i)).^(-alpha))).*dj(i)) - (b*beta.*(c1(i)).^(-alpha))) - 1);

          b(:,i)=(((beta.*((c1(i).^(-alpha)) + (b*beta*(c2(i)).^(-alpha))).*dj(i)) - (b*beta.*(c1(i)).^(-alpha))) - 1)*dj(i);

 c(:,i)=(((beta.*((c1(i).^(-alpha)) + (b*beta (c2(i)).^(-alpha))).*dj(i)) - (b*beta.*(c1(i)).^(-alpha))) - 1)*consumpt(i);
我得到以下错误:

Assignment has more non-singleton rhs dimensions than non-singleton subscripts 

Error in Q (line 43) 

 a(:,i)=(((beta.*((c1(i).^(-alpha)) + (bbeta*(c2(i)).^(-alpha))).*dj(i)) - (bbeta.*(c1(i)).^(-alpha))) - 1);

看起来您正在将
b
从标量重新指定为向量,这可能会导致问题

b = param(3);
...
b = zeros(1, 694);

请告诉我们错误在哪里这是我得到的错误。。感谢您,作业中的非单例rhs维度比Q(第43行)a中的非单例下标错误多(:,i)=((β。*((c1(i)。^(-alpha))+(bbeta*(c2(i))。^(-alpha))).*dj(i))-(bbeta.*(c1(i))。^(-alpha))-1);
=
右边所有东西的
size()是多少?
大小是(694,1)。这需要我们的帮助。你是对的。我唯一想更改的是代码的这一部分,将“b”改为实际的“d”。d(:,i)=((β。*((c1(i)。^(-alpha))+(bbeta*(c2(i))。^(-alpha))).*dj(i))-(bbeta.*(c1(i))。^(-alpha))-1)*dj(i);它是有效的。但现在我又遇到了另一个问题。我会设法解决的。我希望能处理好它。非常感谢,没问题!如果您有任何其他问题,请告诉我。如果我的答案解决了你的问题,你能在我的答案旁边打个记号吗?谢谢