Je m'excuse à l'avance pour cette question. Je n'aime pas les questions "expliquer ce code", mais je ne trouve aucune documentation sur mon exemple spécifique.
Contexte
Mon problème est le suivant. J'essaie de traduire du code MATLAB en C #, mais je dois en même temps apprendre MATLAB. Je ne travaille avec personne qui connaît le code MATLAB, je n'ai pas accès à MATLAB, donc je ne peux tester aucun code et je ne trouve aucune documentation sur la question suivante. Donc...
Des questions)
Y a-t-il un compilateur/interprète MATLAB gratuit en ligne/de bureau quelque part que je peux utiliser pour tester le code MATLAB?
...ou...
Y a-t-il quelqu'un qui peut expliquer l'extrait de code suivant:
someVar.member1=myValue1;
someVar.member2=myValue2;
if (myCondition)
for i=1:myTotal
someVar(i).member3=myValue3;
end;
end;
Est-ce que cela fait de someVar
un tableau? Dois-je perdre member1
et member2
ou enregistre-t-il ce que j'ai défini d'une manière ou d'une autre?
Re: 1 - Il y a l'excellent Documentation Matlab , y compris des didacticiels vidéo, qui vous aideront à comprendre Matlab. C'est beaucoup plus utile qu'un compilateur, car vous apprendrez ce que le code voulait, afin de pouvoir le réécrire d'une manière appropriée pour C #, plutôt que d'essayer de copier la syntaxe optimisée pour Matlab.
Cependant, pour tester le code Matlab, il y a Octave qui fournit la plupart des fonctionnalités du noyau Matlab, mais peut ne pas prendre en charge les fonctions de la boîte à outils (modules supplémentaires de Matlab que vous payez en supplément).
Re: 2 - Voici ce que fait le code
Instanciez un tableau de structuresomeVar
(Matlab n'a pas besoin de déclarer de variables au préalable) avec un champ member
; affectez-le à myValue1
someVar.member1=myValue1;
Créez un champ supplémentaire member2
, Définissez-le sur myValue2
someVar.member2=myValue2;
Si la condition est vraie, bouclez myTotal
fois et définissez le champ member3
De tous les éléments i
de someVar
sur myValue3
. Ainsi, someVar
passe d'un tableau de structure 1 par 1 à un tableau de structure 1 parmyTotal
. someVar(1).member1
reste myValue1
, tandis que someVar(i).member1
est initialisé à vide ([]
).
if (myCondition)
for i=1:myTotal
someVar(i).member3=myValue3;
end;
end;
/ apart: Cette boucle est un moyen plutôt inefficace de définir la structure. Il se peut donc qu'il n'y ait pas beaucoup de syntaxe optimisée pour Matlab dans le code que vous devez traduire.
Essayez ce site Web:
http://www.compileonline.com/execute_matlab_online.php
Il a un compilateur Matlab ainsi que de nombreux autres langages tels que Perl, Python, Java, C, etc.
Vous pouvez essayer Octave, qui est gratuit et assez compatible avec MATLAB.
À la fin de cet extrait (en supposant que myCondition
est vrai), someVar
sera un vecteur de longueur myTotal
(c'est-à-dire un tableau de taille 1 par myTotal
). Chaque élément du vecteur sera une structure à trois champs member1
, member2
et member3
. Le premier élément du vecteur aura des valeurs pour les trois champs; les autres auront des valeurs uniquement pour member3
, et aura le tableau vide comme valeurs pour member1
et member2
. Si myCondition
est faux, vous aurez une structure unique avec deux champs member1
et member2
.
J'espère que cela pourra aider!
J'ai écrit une interface en ligne gratuite pour MATLAB/Octave qui exécute des scripts et a également une invite en direct où vous pouvez taper des commandes. Vous pouvez également enregistrer vos scripts entre les sessions. Découvrez-le sur octave-online.net .
Je veux juste réitérer l'un des choix suggérés: anycodex.com dans une réponse précédente, car il n'a pas été mentionné qu'il s'agit d'un véritable interprète MATLAB en ligne, ce qui est vraiment sympa. J'étais méfiant au début, pensant que c'était juste un autre alimenté par Octave, mais après avoir utilisé la commande ver
, il semble montrer qu'il utilise MATLAB Version: 7.14.0.739 (R2012a)
comme on le voit ici avec ses produits installés:
--------------------------------------------------------------------------------------------------
MATLAB Version: 7.14.0.739 (R2012a)
MATLAB License Number: 161052
Operating System: Linux 3.5.0-23-generic #35~precise1-Ubuntu SMP Fri Jan 25 17:15:33 UTC 2013 i686
Java Version: Java 1.6.0_17-b04 with Sun Microsystems Inc. Java HotSpot(TM) Client VM mixed mode
--------------------------------------------------------------------------------------------------
MATLAB Version 7.14 (R2012a)
Simulink Version 7.9 (R2012a)
Aerospace Blockset Version 3.9 (R2012a)
Aerospace Toolbox Version 2.9 (R2012a)
Bioinformatics Toolbox Version 4.1 (R2012a)
Communications System Toolbox Version 5.2 (R2012a)
Computer Vision System Toolbox Version 5.0 (R2012a)
Control System Toolbox Version 9.3 (R2012a)
Curve Fitting Toolbox Version 3.2.1 (R2012a)
DO Qualification Kit Version 1.6 (R2012a)
DSP System Toolbox Version 8.2 (R2012a)
Database Toolbox Version 3.11 (R2012a)
Datafeed Toolbox Version 4.3 (R2012a)
Econometrics Toolbox Version 2.1 (R2012a)
Embedded Coder Version 6.2 (R2012a)
Filter Design HDL Coder Version 2.9.1 (R2012a)
Financial Derivatives Toolbox Version 5.9 (R2012a)
Financial Toolbox Version 4.2 (R2012a)
Fixed-Income Toolbox Version 2.3 (R2012a)
Fixed-Point Toolbox Version 3.5 (R2012a)
Fuzzy Logic Toolbox Version 2.2.15 (R2012a)
Global Optimization Toolbox Version 3.2.1 (R2012a)
HDL Coder Version 3.0 (R2012a)
HDL Verifier Version 4.0 (R2012a)
IEC Certification Kit Version 2.1 (R2012a)
Image Acquisition Toolbox Version 4.3 (R2012a)
Image Processing Toolbox Version 8.0 (R2012a)
Instrument Control Toolbox Version 3.1 (R2012a)
MATLAB Builder JA Version 2.2.4 (R2012a)
MATLAB Coder Version 2.2 (R2012a)
MATLAB Compiler Version 4.17 (R2012a)
MATLAB Distributed Computing Server Version 6.0 (R2012a)
MATLAB Report Generator Version 3.12 (R2012a)
Mapping Toolbox Version 3.5 (R2012a)
Model Predictive Control Toolbox Version 4.1 (R2012a)
Neural Network Toolbox Version 7.0.3 (R2012a)
Optimization Toolbox Version 6.2 (R2012a)
Parallel Computing Toolbox Version 6.0 (R2012a)
Partial Differential Equation Toolbox Version 1.0.20 (R2012a)
Phased Array System Toolbox Version 1.2 (R2012a)
RF Toolbox Version 2.10 (R2012a)
Robust Control Toolbox Version 4.1 (R2012a)
Signal Processing Toolbox Version 6.17 (R2012a)
SimBiology Version 4.1 (R2012a)
SimDriveline Version 2.2 (R2012a)
SimElectronics Version 2.1 (R2012a)
SimEvents Version 4.1 (R2012a)
SimHydraulics Version 1.10.1 (R2012a)
SimMechanics Version 4.0 (R2012a)
SimPowerSystems Version 5.6 (R2012a)
SimRF Version 3.2 (R2012a)
Simscape Version 3.7 (R2012a)
Simulink 3D Animation Version 6.1 (R2012a)
Simulink Code Inspector Version 1.1 (R2012a)
Simulink Coder Version 8.2 (R2012a)
Simulink Control Design Version 3.5 (R2012a)
Simulink Design Optimization Version 2.1 (R2012a)
Simulink Design Verifier Version 2.2 (R2012a)
Simulink Fixed Point Version 7.1 (R2012a)
Simulink Report Generator Version 3.12 (R2012a)
Simulink Verification and Validation Version 3.3 (R2012a)
Stateflow Version 7.9 (R2012a)
Statistics Toolbox Version 8.0 (R2012a)
Symbolic Math Toolbox Version 5.8 (R2012a)
System Identification Toolbox Version 8.0 (R2012a)
SystemTest Version 2.6.3 (R2012a)
Wavelet Toolbox Version 4.9 (R2012a)
Très belle trouvaille en effet. À votre santé.