2016-06-22 3 views
-1

Je suis un débutant dans MATLAB. J'ai ma fonction testnetwork:Utilisation de tableaux de cellules et obtention d'un nombre trop important d'arguments d'entrée

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 

et voici mon script principal:

% 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 

Je reçois l'erreur too many input arguments. Je ne sais pas quel est le problème.

+0

Votre problème est 'testset {:, i}'. Cela produirait une liste de 180 éléments séparés par des virgules. Cela signifie que vous essayez d'alimenter votre fonction avec 180 + 1 entrées. Je n'ai aucune idée de ce que 'testset {:, i}' est censé être, donc je ne peux pas commenter ce que vous essayez de faire. En outre, 'output {:, i}' vous donnera une erreur une fois que vous aurez corrigé le problème 'testset {:,}}. – rayryeng

+0

@rayryeng exactement je veux charger 181 parce que couche.netwok est une matrice et matrice_multiplication_same_dimension multiplier 2 matrice –

+0

..... Euh, quoi? – rayryeng

Répondre

0

Cette ligne est le problème:

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

Lorsque vous dè référence la matrice de cellules testset en utilisant des accolades {} avec des entrées multiples, il faut les cellules individuelles de la matrice de cellules et retourne tous comme séparés arguments:

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

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

Notez les deux instances de ans dans la deuxième évaluation. Je suppose que ce que vous voulez vraiment est une référence à une seule cellule des deux côtés de l'équation:

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

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

+0

résultat = network.activation (matrix_multiplication_same_dimension (network.couches {i}, vertcat (résultat, b))); network.couche est un tableau de cellules et j'ai besoin de multiplier 2 matrice de cellules comme la multiplication de 2 matrices donc j'ai besoin de charger colonne par colonne et pas élément par élément –

+0

la matrice de matrice_multiplication_same_dimension multiplier 2 matrice de tableau (pour quaternions) –