S是cell矩阵,所以应该当cell矩阵用,而不是3维数组。函数改成:
function[Xy]=generate_gauss_classes(m,S,P,N)
[l,c]=size(m);
X=[];y=[];
forj=1:c
mj=m(:,j);
t=mvnrnd(mj,S{j},fix(P(j)*N));%修改了这里
X=[X,t\'];%修改了这里
y=[y,ones(1,fix(P(j)*N))*j];
end
运行:
m=[121;345];
S={[12;12],[34;34],[56;56]};
P=[0.10.20.7];
N=10;
[Xy]=generate_gauss_classes(m,S,P,N);
???Errorusing==mvnrndat118
SIGMAmustbeasymmetricpositivesemi-definitematrix.
Errorin==generate_gauss_classesat6
t=mvnrnd(mj,S{j},fix(P(j)*N));
这次报的错误,不同了,是说,Sigma输入必须是一个对称的,正定矩阵(?),额好像是这样的,换一个输入:
Sigma=[.9.4;.4.3];%这是matlab在helpmvnrnd中举例用的一个矩阵。
S={Sigma,Sigma,Sigma};
[Xy]=generate_gauss_classes(m,S,P,N);
这次不报错了。
<h4class=\"ask\">追问
多谢,我的matlab编程技术太差正在努力中 |