我有一個關於matlab代碼的問題。我有一個特定的一個變量函數,我想在這個函數中將一個向量或數組賦值爲一個x值。但我沒有達到成功。 我的代碼的一部分是在低於:在matlab中使用函數的矢量
a=-5; b=10; n=20; %[a,b] interval range and n is number of interval
sz = (b-a)/n; %interval size
t=1; %iteration number
for i=1:n
I(i,:,t) = [a+(i-1)*sz a+i*sz]; %interval
x(i,:,t) = a+(i-0.5)*sz; %midpoint of interval
end
f= x.^2-3.*x+5; %my sample function
for i=1:n
if i==1
j=i+1;
neigbor(i,:,t) = I(j,:,t); %neigbor of interval I1's
h_f(i,:,t) =abs(f(x(i,:,t))-f(x(j,:,t))); %heuristic value
prob(i,:,t)=(ph(j,:,t).*h_f(i,:,t))./(ph(j,:,t).*h_f(i,:,t)); %probability
...
其他如果條件跟隨此代碼,但我檢查這在下面樣品部分i和j值,它給出錯誤是這樣的:「下標索引必須是真正的正整數或邏輯「。
h_f(i,:,t) =abs(f(x(i,:,t))-f(x(j,:,t)));
我不知道什麼?我的錯誤是什麼?你能提出什麼建議嗎?如果你需要完整的代碼,我可以發佈。
編輯:其實這個函數f通過使用自己返回值。但它在註釋h_f(i,:,t)= abs((f(x(i,:,t)-x(j,:,t))中不返回值
解決方案編輯:單獨的函數m文件,並調用主函數。不需要在f中寫入x數組。
更改您的變量名稱,使其更易於閱讀。 – LearningProcess