Matlab中怎么把循环中得到的几个矩阵分别赋值给元胞数组的元素呢,具体例子如下

s=2;
k=4;
p1=0.1;
q1=1-p1;
p2=0.3;
q2=1-p2;
r1=0.4;
s1=1-r1;
r2=0.2;
s2=1-r2;
%----------------------构造元胞数组--------------------------------%

j=s+k+1;

C=cell(j);

%----------------------用零元素填充元胞数组--------------------------%
for m=1:s+1
for n=1:s+1
C(m,n)={zeros(m,n)};
for n=(s+2):(s+k+1)
C(m,n)={zeros(m,s+1)};
end
end
end
for m=(s+2):(s+k+1)
for n=1:(s+k+1)
C(m,n)=C(s+1,n);
end
end
C;
% celldisp(C);
%-----------------------用对应概率覆盖元胞数组相应的零元素---------------%
for i=0:s
A=zeros(i+1,1);
for j=0:i
A(j+1,1)=q1*r1^(i-j)*q2*r2^j;
end
A;
end
请问这个程序中想让循环得到的三个A矩阵分别赋值给元胞数组的三个元素C{1,1},C{2,1},C{3,1}的话,应该怎么写呢?

第1个回答  2011-03-27
for i=0:s
A=zeros(i+1,1);
for j=0:i
A(j+1,1)=q1*r1^(i-j)*q2*r2^j;
end
C{i+1,1}=A;
end追问

谢谢您的解答,但是加上语句 C{i+1,1}=A;后
只能把得到的第一个A矩阵赋给了C{1,1},但是C{2,1},C{3,1}的值没有改变啊,
也就是C{i+1,1}=A;没有循环啊,
请问怎么办呢?
急需解答!

追答

你的A是变化的,应为你的A矩阵中的值与i有关系,
for j=0:i
A(j+1,1)=q1*r1^(i-j)*q2*r2^j;
end
每循环一次,A的值就是不同的值,怎么会是你说的C{2,1},C{3,1}的值没有改变啊,

本回答被网友采纳