【发布时间】:2017-11-07 13:56:55
【问题描述】:
我有这个代码:
function main()
a = 1.0e+04 * [0.005055052938847,0.010897917816899,0.022355965424711,0.043081981439108,0.077074049394439,0.127074049394439,0.193081981439108,0.272355965424711,0.360897917816899,0.455055052938847,0.552256864601221,0.650978664311931,0.750415022011379,0.850172973479352,0.950071110045004,1.050028912038499,1.150011648830086]
B = 1.0e+04 * [1.215101736363023,0.697166188613023,0.400000000000000,0.229500515964941,0.131676217070435,0.075549399394941,0.043346565354951,0.024870147785673,0.014269279372341,0.008187017446000,0.004697311820178,0.002695088715947,0.001546310627203,0.000887197716963,0.000509030834515,0.000292057097908,0.000167568136653
m = timeloop(a,B);
end
function m = timeloop(a,B)
st = zeros(49,4);
t = 0:0.001:0.05;
for i = (1:49)
st(i+1,1:4) = next_state(st(i,1:4),a,B,1e-4);
end
m = mean(prod(state,2))
end
function next_state = next_state(state,alpha,beta,dt)
nch = size(state,2);
p01 = rand(1,nch);
alphadt = repmat(alpha,1,nch)*dt;
betadt = repmat(beta,1,nch)*dt;
next_state1 = (p01<alphadt) .* (state==0);
next_state0 = (p01<betadt) .* (state==1);
next_state = state + next_state1 - next_state0;
end
但它给了我以下错误:
矩阵尺寸必须一致。
q3>next_state中的错误(第 59 行)next_state1 = (p01<alphadt) .* (state==0);
q3>timeloop中的错误(第 49 行)st(i+1,1:4) = next_state(st(i,1:4),a,B,1e-4);
q3中的错误(第 4 行)m = timeloop(a,B);
run中的错误(第 86 行)evalin('caller', [script ';']);
我尝试将乘法更改为 *,但没有任何改进。我查找的online 似乎无法帮助我。我不太了解 MATLAB,所以您的解释必须非常具体。
【问题讨论】:
-
在发布尝试的解决方案之前,应解释实际问题。这样可以更轻松地调试您尝试的解决方案并提供替代/更好的解决方案
标签: matlab matrix matrix-multiplication