2016-06-22 60 views
-1

我是MATLAB的初學者。我有我的功能testnetwork使用單元陣列並獲取太多輸入參數錯誤

function result = TestNetwork(network, input) 
result = input; 
b= [-1 -1 -1 -1 ]; 
     % Iterate over all the couches 
     for i=1:length(network.couches) 
     result = network.activation(matrix_multiplication_same_dimension(network.couches{i} , vertcat (result , b))); 
     end 
end 

,這是我的主要腳本:

% initialis a cell of zeros for example output = zeros_quat(zeros(1, 2)) is %equal to [0 0 0 0] [0 0 0 0] 
output = zeros_quat(zeros(10, size(testset,2))); 
% 
for i = 1:size(testset, 2) 
%testset is a cell of arrays size (81 * 180) 
    output {:,i} = TestNetwork(network, testset{:,i}); 
end 
end 

我得到的錯誤too many input arguments。我不知道問題是什麼。

+0

你的問題是'testset {:,i}'。這將產生一個由180個元素組成的以逗號分隔的列表。這意味着你試圖用180 + 1輸入來提供你的功能。我不知道'testset {:,i}'實際上應該是什麼,所以我不能評論你想要做什麼。另外,一旦解決了'testset {:,i}'問題,'output {:,i}'會給你一個錯誤。 – rayryeng

+0

@rayryeng正是我想加載181因爲couche.netwok是一個矩陣和matrix_multiplication_same_dimension乘以2矩陣 –

+0

.....呃,什麼? – rayryeng

回答

0

這條線的問題是:

output {:,i} = TestNetwork(network, testset{:,i}); 

當你去參考使用大括號{}具有多個條目單元陣列testset,它需要的單元陣列的各個單元,並返回它們作爲單獨的參數:

a = { [ 1 2], [3 4] }; 
a{1} 
ans = 
    1  2 

a{1,:} 
ans = 
    1  2 
ans = 
    3  4 

注意第二次評估中的兩個實例ans。我懷疑你真正想要的是參考等式兩邊的單個單元格:

output{i} = TestNetwork(network, testset{i}); 
+0

result = network.activation(matrix_multiplication_same_dimension(network.couches {i},vertcat(result,b))); –

+0

result = network.activation(matrix_multiplication_same_dimension(network.couches {i},vertcat(result,b))); network.couche是一個單元陣列,我需要乘以2矩陣的乘法,因此我需要加載一列一列,而不是按元素加載 –

+0

函數matrix_multiplication_same_dimension乘法2陣列矩陣(用於四元數) –