我寫了一個函數來執行n個obejects的排列。 我有變量a = [1],[2],[3]; k = 1和n = 4; a分別包含1,2和3的對象。以下是我寫的函數代碼:Matlab排列
function [res]=perm(a,k,n,jj)
if k==n
res{jj}=a;
jj=jj+1;
else
for i=k:n
t=a{k};
a{k}=a{i};
a{i}=t;
perm(a,k+1,n,jj)
t=a{k};
a{k}=a{i};
a{i}=t;
end
end
end
然而,當我調用該函數爲:
jj=1;
[res]=perm(a,k,n,jj)
我越來越顯示以下錯誤:
Error in ==> perm at 3
if k==n
??? Output argument "res" (and maybe others) not assigned during call to "J:\main
project\perm.m>perm".
Error in ==> mainp at 254
[res]=perm(a,k,n,jj)
以下是關於主程序代碼到排列:
mr=4
for i=1:mr
a{i}=i;
end
n=mr;
%This assignment is for the ease to work with.
%just stored the indices till mr for the purpose of permutation
k=1;
%this is the k that the function perm has
jj=1;
[res]=perm(a,k,n,jj)
有人可以幫我解決這個問題嗎?在此先感謝。
是否有可能'perm'是'perm.m'裏面的一個嵌套函數?是否有可能在'perm'之外的範圍內有一個變量'res'? – Shai
你能分享你的全部代碼嗎?看起來你沒有正確地調用這個函數。 '錯誤在==> mainp at 254 [res] = perm(a,k,n,jj)' –
錯誤信息看起來不錯,即使這個位置不是。確保每個通過'perm'的路徑都分配了'res'。現在只在'k == n'時才分配。 –