应该如何编程表示?
问题是这样的:L 是程序上一步求出的一个值(整数),它决定了有几个A,而A是一个一行k列的矩阵 A(1,k)
假设L=2 那么 有这样的关系 A2(1,k)=A1(1,k-1); MSL(1,k)=A1(1,k)+A2(1,k);
现在L 是个可变的 我要编一个通式
理想状态是这样的:
for i=1:T-1
WPD(i+1)(1,k)=WPD(i)(1,k-1);
end
MSL(1,k)=A1(1,k)+A2(1,k)+......+AL(1,k);
但是很明显不能这样表示 应该怎么表示?
百思不得其解:'(请各位高手支招!
[ 本帖最后由 ChaChing 于 2009-12-26 11:52 编辑 ] 个人水平专业有限, 看不清楚建议说的, 待高人路过! A2(1,k),L or one?
回复 板凳 VibrationMaster 的帖子 沙发 ChaChing 的帖子
不好意思 写错了 修改后的在这里:还望高手提点,谢谢。L 是程序上一步求出的一个值(整数),它决定了有几个A,而A是一个一行k列的矩阵 A(1,k)
假设L=2 那么 有这样的关系 A2(1,k)=A1(1,k-1); MSL(1,k)=A1(1,k)+A2(1,k);
现在L 是个可变的 我要编一个通式 (L是多少就有多少个A)
理想状态是这样的:
for i=1:T-1
A(i+1)(1,k)=A(i)(1,k-1);
end
MSL(1,k)=A1(1,k)+A2(1,k)+......+AL(1,k);
但是很明显不能这样表示 应该怎么表示?
[ 本帖最后由 ChaChing 于 2009-12-26 11:53 编辑 ]
回复 地板 zebtra_stripe 的帖子
???k=15; L=10; a1=1:k;
aa=zeros(L,k);
for ii=1:L, aa(ii,ii:k)=a1(1:k-ii+1); end
MSL=sum(aa)
回复 5楼 ChaChing 的帖子
非常感谢这么晚还给我回帖,真是好人:@)请问下这样表示后 最后一个A ( 也就是第L个A ) 是怎么表示因为我要给它赋值
是 aa(L,L:k)?
谢谢。。 为什么不能用二维数组?
回复 7楼 VibrationMaster 的帖子
这个应该可以有,但是这个真不会。。汗!:@L
回复 7楼 VibrationMaster 的帖子
二维数组是2-D array吧! 我不是使用aa了?回复 6楼 zebtra_stripe 的帖子
k=15; L=10; a1=1:k;aa=zeros(L,k);
for ii=1:L
aa(ii,ii:k)=a1(1:k-ii+1);
eval(['A',num2str(ii),'=aa(ii,:);']);
end
MSL=sum(aa)
回复10楼 ChaChing 的帖子
主任 我还是有问题想请教一下:1、这里的k表示周期,每个周期都有L个A值,L是个变量,所以我觉得 a1=1:k;
这种错误的表达是我没有表达清楚而造成的,不好意思;
2、eval(['A',num2str(ii),'=aa(ii,:);']);
这个是什么意思 可以麻烦简单的解释下么?我help 了 但是还是没看懂 :@L
3、程序的大概构架是这样的:
for k=1:index
.................
if POS(1,k)<=Po
L=2;
WIS(1,k)=max(POS(1,k),0);%制造商生产部门在制品投产量(即零部件和原材料出库量)
WPR(1,k)=WIS(1,k);
MIS(1,k)=max(min(WI(1,k-1)+WIS(1,k-1),WB(1,k-1)+WIO(1,k-1)),0);
WPR(1,k-2)=MIS(1,k);
A2(1,k-1)=MIS(1,k-1); %这里是由于L=2所以有A1A2
A1(1,k)=WPR(1,k-1);
A2(1,k)=A1(1,k-1);
MSL(1,k)=A1(1,k)+A2(1,k); %制造商销售部门产品在途量
else if POS(1,k)>Po
WIS(1,k)=max(POS(1,k),0);%制造商生产部门在制品投产量(即零部件和原材料出库量)
WPR(1,k)=WIS(1,k);
WOS(1,k)=min(WI(1,k-1)+WIS(1,k-1),WB(1,k-1)+WIO(1,k-1));%制造商生产部门在制品完成量(即产品生产量)
Uo=WOS(1,k);
L=ceil(Lo+ (POS(1,k)-Po)/Uo); %这里决定了L是变量
MIS(1,k)=WOS(1,k);
WPR(1,k-L)=MIS(1,k);
aa=zeros(T,k); %%现在的问题就在这里 我实在是不会表示了 L个A,还有着类似于下面注释部分的关系
(当然注释部分的表达不是MATLAB的表示,只是大概这个意思)
for ii=1:T
aa(ii,ii:k)=a1(1:k-ii+1);
end
% for i=1:T
% A(L)(1,k-1)=MIS(1,k-1);
% A(i)(1,k)=WPR(1,k-1);
% A2(1,k)=A1(1,k-1);
% A(i+1)(1,k)=A(i)(1,k-1);
% end
MSL(1,k)=sum(aa);
end
end
end
谢谢你,帮帮忙了,就等着这个程序毕业了,搞不定年都过不好,跪谢跪谢 !!
回复 11楼 zebtra_stripe 的帖子
个人水平有限, 实在无法子细看懂LZ的程序! LZ一定得让想帮的人知道LZ要什么!1."k=15; L=10; a1=1:k;"仅是举例而已, 具体看LZ运用!
2.eval(['A',num2str(ii),'=aa(ii,:);']), 简单说: 若当ii=2时, 等同执行A2=aa(2,:);
回复 12楼 ChaChing 的帖子
谢谢你,我还是问点小的知识自己慢慢写吧请问下 二维数组 如果要表示A2(1,k)=A1(1,k-1);类似的表达
可以写成
for ii=1:T
A=A;
end这样吗? 貌似有错误.
谢谢
回复 12楼 ChaChing 的帖子
想了一早上,最明了的说,我要的是;把下面的表达能够写成一个通式:switch T
case 2
WPD2(1,k-1)=MIS(1,k-1);
WPD1(1,k)=WPR(1,k-1);
WPD2(1,k)=WPD1(1,k-1);
MSL(1,k)=WPD1(1,k)+WPD2(1,k);
case 3
WPD3(1,k-1)=MIS(1,k-1);
WPD1(1,k)=WPR(1,k-1);
WPD2(1,k)=WPD1(1,k-1);
WPD3(1,k)=WPD2(1,k-1);
MSL(1,k)=WPD1(1,k)+WPD2(1,k)+WPD3(1,k);
case 4
WPD4(1,k-1)=MIS(1,k-1);
WPD1(1,k)=WPR(1,k-1);
WPD2(1,k)=WPD1(1,k-1);
WPD3(1,k)=WPD2(1,k-1);
WPD4(1,k)=WPD3(1,k-1);
MSL(1,k)=WPD1(1,k)+WPD2(1,k)+WPD3(1,k)+WPD4(1,k);
case 5
WPD5(1,k-1)=MIS(1,k-1);
WPD1(1,k)=WPR(1,k-1);
WPD2(1,k)=WPD1(1,k-1);
WPD3(1,k)=WPD2(1,k-1);
WPD4(1,k)=WPD3(1,k-1);
WPD5(1,k)=WPD4(1,k-1);
MSL(1,k)=WPD1(1,k)+WPD2(1,k)+WPD3(1,k)+WPD4(1,k)+WPD5(1,k);
。。。。。。。。
end
这样我的问题应该很好理解了吧?实在不好意思:@L
期待高手的帮助,谢谢
回复 14楼 zebtra_stripe 的帖子
eval(['WPD',num2str(T),'(1,k-1)=MIS(1,k-1);']);WPD1(1,k)=WPR(1,k-1); MSL(1,k)=WPD1(1,k);
for kk=2:T
eval(['WPD',num2str(kk),'(1,k)=WPD',num2str(kk-1),'(1,k-1);']);
eval(['MSL(1,k)=MSL(1,k)+WPD',num2str(kk),'(1,k);']);
end
但真的不确定是否LZ要的!? 假设T是一整数!
页:
[1]
2