J'ai une fonction dans matlab qui accepte une matrice nx1.Comment sélectionner chaque ligne comme un élément dans matlab
J'ai une matrice X de NX2 obscurcit
Comment puis-je envoyer matrice X à la fonction où chaque rangée de X va comme un élément?
J'ai une fonction dans matlab qui accepte une matrice nx1.Comment sélectionner chaque ligne comme un élément dans matlab
J'ai une matrice X de NX2 obscurcit
Comment puis-je envoyer matrice X à la fonction où chaque rangée de X va comme un élément?
Jetez un oeil à ce matrix indexing in MATLAB article sur le site MathWorks pour des informations et des exemples de matrices d'indexation. Pour sélectionner les lignes d'une matrice que vous pouvez faire quelque chose comme ce qui suit:
>> m = rand(5, 2)
m =
0.8147 0.0975
0.9058 0.2785
0.1270 0.5469
0.9134 0.9575
0.6324 0.9649
>> m(1,:)
ans =
0.8147 0.0975
>> m(end,:)
ans =
0.6324 0.9649
Le premier indice d'une matrice correspond aux lignes , la seconde correspond aux colonnes. Ici, le :
comme deuxième index sélectionne toutes les colonnes de la ligne appropriée. Si vous avez une fonction func
, et la matrice m
de ci-dessus, vous pouvez passer chaque rangée de m
-func
comme suit:
for i = 1:length(m)
func(m(1,:)')
end
Notez la transposition, qui convertit chaque rangée de m
dans un tableau 2x1
, soit une colonne vecteur, plutôt que d'un vecteur de ligne.
Si je comprends bien, vous devez faire quelque chose comme
for i=1:size(X,1)
f(X(i,:)');
end
ce qui signifie que vous passez chaque ligne à la fonction séquentielle f
, transposée comme vecteur de colonne.
Si au contraire vous voulez linéariser X
sur les lignes, vous devez effectuer les opérations suivantes:
Xlin = reshape(X',numel(X),1);
f(Xlin);
Après avoir relu votre question, pouvez-vous la clarifier un peu? Voulez-vous vraiment dire que chaque ligne de 'X' devrait aller à la fonction, il semblerait plus approprié de passer chaque * colonne * de' X' à la fonction. – Chris
les colonnes sont limitées à 1, donc je veux combiner les 2 colonnes –
Désolé, mais que voulez-vous dire que vous "voulez combiner les 2 colonnes"? Est-ce que ma réponse vous donne ce que vous voulez? – Chris