永发信息网

matlab for循环中变量可以写成x(i,j,m)这种形式吗?

答案:1  悬赏:50  手机版
解决时间 2021-04-07 00:28
  • 提问者网友:暮烟疏雨之际
  • 2021-04-06 04:00
matlab for循环中变量可以写成x(i,j,m)这种形式吗?
最佳答案
  • 五星知识达人网友:三千妖杀
  • 2021-04-06 05:28
%% 可以
 % 例子
for i = 1:2
    for j = 1:3
        for m = 1:4
            x(i,j,m) = i+j+m;
        end
    end
endx
x(:,:,1) =
     3     4     5
     4     5     6
x(:,:,2) =
     4     5     6
     5     6     7
x(:,:,3) =
     5     6     7
     6     7     8
x(:,:,4) =
     6     7     8
     7     8     9
追答
追问:Attempted to access x(2,1,1); index out of bounds because size(x)=[1,180].
Error in ==> fitness6 at 19
result(1)=-0.785*L(m)*s(m)*x(2,m,n)/Lmax;您可以帮我看看为什么错了不
追答:% 你的 x 变量已经确定为 1×180
x = zeros(2,3,4);         % 预设 x 为 2×3×4 值均为 0
for i = 1:2
    for j = 1:3
        for m = 1:4
            x(i,j,m) = i+j+m;
        end
    end
end
追问:错误应该是x=zeros(100,3,15,4);和result(1)=-0.785*L(m)*s(m)*x(2,m,n)/Lmax;不匹配造成的,但是怎么改我也不会,大神可以帮我看看不?100代表粒子个数,3代表交叉口数,15,过饱和周期数,4变量个数。谢谢大神啦
追答:% 预设 x=zeros(100,3,15,4) 表示是四维向量,用的时候维数要匹配。

% result(1)=-0.785*L(m)*s(m)*x(2,m,n)/Lmax;
p = 1; % 第 1 个变量
result(1) = -0.785*L(m)*s(m)*x(2,m,n,p)/Lmax;
追问:是这样的x(2,m,n),这个变量里面的2就是表示第二个变量,您的意思是括号里也得凑够4个数吗?我之前调试的一个简单程序是x=zeros(100,4),
类似于result=(x(1)-x(2)-1.48)/2;这个可以调试出来结果。谢谢您,辛苦啦
追答:%“100代表粒子个数,3代表交叉口数,15,过饱和周期数,4变量个数” 就表示四维

%“x(2,m,n),这个变量里面的2就是表示第二个变量” 是表示第 2 个粒子吧?

% 可以发私信看看你的完整代码吗?
追问:2不是代表第二个人粒子,2代表的是x(2)这个变量,是文中的绿灯时间这个变量。好的,谢谢大神
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯