matlab 问题 我建了一个m文件如下:

[复制链接]
查看11 | 回复1 | 2011-10-13 07:46:16 | 显示全部楼层 |阅读模式
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=[Xt];
y=[yones(1,fix(P(j)*N))*j];
end
然后再command窗口输入以下:
m=[121;345];
S={[12;12],[34;34],[56;56]};
P=[0.10.20.7];
N=10;
generate_gauss_classes(m,S,P,N)

但是报错:
???Errorusing==mvnrnd
MUmustbearowvector,ormusthaveCASESrows.

Errorin==generate_gauss_classesat7
t=mvnrnd(mj,S(:,:,j),fix(P(j)*N));


拜托~帮忙
回复

使用道具 举报

千问 | 2011-10-13 07:46:16 | 显示全部楼层
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编程技术太差正在努力中
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行