佳琳 发表于 2010-8-27 11:51

matlab运行答案总是ans=3,请指点原因。在线等

本帖最后由 佳琳 于 2010-8-27 16:11 编辑

请问一下,我的matlab程序运行答案总是ans=3,是怎么回事,请高手指点。
我已经清空过好几次了,都是一个结果。a=linspace(0,0,1000);
x=zeros(1000,100);
y=zeros(1000,100);
w=[];
m=[];
k=0;
i=0;
j=0;
t=0;
d=0;
s=0;
g1=0;
g2=0;
wlong=0;
w(1)=0;
step=0;
while step<2

%随机选取顾客
while t<=600
kk=round(rand()*999)+1;
if aa(kk)==0
aa(kk)=1;
t=t+1;
end;
end;
k=round(rand()*400);
t=0;
while t < =k
kk = round(rand() * 999) + 1;
if aa(kk) == 0
aa(kk) = 2;
t = t + 1;
end;
end;
for i = 1:1000
if aa(i) == 0
aa(i) = 3;
end;
end;
%设置q,表示顾客i对j是否偏好
for i = 1:1000
for j = 1:100
if p(i, j)==0
q(i, j) = 0;
else
q(i,j)=1;
end;
end;
end;

%开始随即挑选DVD编号
while s < 100000000
%给第一组的顾客选DVD,存入X
for i = 1:1000
if aa(i) == 1 | aa(i) == 2
t = 1;
while t <=3
kk=round(rand() * 99)+1;
if x(i, kk) == 0
x(i, kk) = 1;
t = t + 1;
end;
end;
end;
end;
%给第二组的顾客选DVD,存入y
for i = 1:1000
if aa(i) == 3
t = 1;
while t <=3
kk=round(rand() * 99)+1;
if y(i, kk) == 0
y(i, kk) = 1;
t = t + 1;
end;
end;
end;
end;
%计算两组顾客分到了想要的DVD的数量
for r = 1:1000
for g = 1:100
if aa(r) == 1
g1 = g1 + x(r, g) * q(r, g) * y(r, g);
g2 = g2 + x(r, g) * q(r, g) * y(r, g);
elseif aa(r) == 2
g1 = g1 + x(r, g) * q(r, g);
elseif aa(r) == 3
g2 = g2 + y(r, g) * q(r, g);
end;
end;
end;
%看通过率是否达到95%,达到计算此时的满意度和DVD数
if g1 * (600 + k) / 1600 / (600 + k) + g2 * (1000 - k) / 1600 / (1000 - k) > 0.95
wlong = wlong + 1;
for r = 1:1000
for g = 1:100
w(wlong) = w(wlong) + x(r, g) * p(r, g);
m(wlong) = g1 + g2;
end;
end;
end;

s = s + 1;
end;

step=step+1
end;


w
m

jiao320123 发表于 2010-8-27 12:00

呵呵 大家好奇嘛 来观看下~~~~  

foreveringxq 发表于 2010-8-27 12:11

a=4;
a也是3吗

厚积薄发 发表于 2010-8-27 12:43

利用clear命令清空下变量空间,然后再试

cp苏薇儿 发表于 2010-8-27 13:09

可能是你以前的变量存储在里面你不知道,可以打开workspace看一下,直接将这个变量删除

machuan1214 发表于 2010-8-27 14:18

利用clear命令清空下变量空间

花道 发表于 2010-8-27 15:00

我基本上是采用看英语文章的办法,先泛读,再精读,再一句一句看,最后再提纲挈领,总算是明白一点了,当然,也可能还是领悟错了。最后要说的一句话是:楼主,你很牛叉,希望你不是真的有病。   

佳琳 发表于 2010-8-27 16:14

回复 厚积薄发 的帖子

初学,可不可以给详细一点的说明呀

   

鱼宝1990 发表于 2010-8-27 16:27

先清空工作区中的变量~~~~~~clear all

study18neu99 发表于 2010-8-27 17:02

变量定义有点乱,没有发挥matlab矩阵运算的优势,建议清空所有变量,并检查循环部分代码
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: matlab运行答案总是ans=3,请指点原因。在线等