IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

la fonction interp1


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Femme Profil pro
    Mécanique
    Inscrit en
    Avril 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Mécanique
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 39
    Points : 18
    Points
    18
    Par défaut la fonction interp1
    bonjour
    j'ai une courbe expérimentale et une courbe numérique je veut que les deux courbes ont le meme abscisse car je veut aprés faire un calcul d'erreur.Le code représenté cidessous permet le calcul d'erreur,et contient la fonction interp1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    function b = fonct(lam)
    global Uexp RFexp
    %lecture des données expérimentaux 
    fid =fopen('données expérimentaux.m','r');
    M = fscanf(fid,'%e',[1,1]);
    xy=fscanf(fid,'%e%e',[2,M]);
    xy1=xy';
    Uexp=xy1(:,1) ; %vesteur colonne U2- déplacement 198 valeurs
    RFexp=xy1(:,2) ;  %vecteur colonne RF2- réaction    198 valeurs
    mef(lam);
    rf4;  (fonction détermine a partir d'un fichier.dat la matrice c(37,5))
    Fint=interp1(Uexp,RFexp,-c(:,3),'spline');
    Fsim= - c(:,5);   (car je veut la norme de c(:,5))
    b=0;
    ta=size(Fint,1);
    for i=1:ta
        X=((Fint(i)-Fsim(i))).^2;
        b=b+X;
    end
    mais il sort un message d'erreur que les valeurs de X doivent être identique :
    voila les données expérimentales :
    198
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    0	0
    0.012204	0.00016374
    0.025267	0.00032956
    0.037584	0.00041247
    0.050546	0.00049538
    0.062609	0.00057829
    0.075736	0.0006612
    0.088061	0.0006612
    0.10128	0.00082702
    0.11366	0.00090993
    0.12646	0.00090993
    0.13887	0.00099284
    0.15208	0.0010757
    0.16566	0.0011587
    0.1784	0.0012416
    0.19105	0.0014074
    0.20347	0.0014903
    0.21639	0.0015732
    0.22879	0.001739
    0.24158	0.0018219
    0.25409	0.0019049
    0.26664	0.0019878
    0.28011	0.0021536
    0.29256	0.0023194
    0.30504	0.0024023
    0.31893	0.0024852
    0.33214	0.002651
    0.34475	0.002734
    0.35839	0.0028998
    0.37113	0.0029827
    0.38486	0.0030656
    0.39831	0.0032314
    0.41135	0.0033972
    0.4254	0.0034801
    0.43788	0.0035631
    0.4505	0.0037289
    0.46312	0.0039776
    0.47604	0.0041434
    0.49004	0.0043922
    0.50251	0.004558
    0.51649	0.0048067
    0.52891	0.0049725
    0.54184	0.0051383
    0.55482	0.0053871
    0.56839	0.0055529
    0.58227	0.0058016
    0.59495	0.0058845
    0.60756	0.0060504
    0.62015	0.0062162
    0.63345	0.006382
    0.6459	0.0065478
    0.65863	0.0067965
    0.67103	0.0069624
    0.68374	0.0071282
    0.69634	0.007294
    0.70899	0.0074598
    0.72207	0.0077086
    0.73512	0.0078744
    0.74758	0.0080402
    0.7602	0.0082889
    0.77267	0.0084548
    0.78561	0.0087035
    0.79811	0.0088693
    0.8105	0.0090351
    0.82374	0.0092839
    0.8384	0.0094497
    0.84942	0.0096155
    0.86198	0.0097813
    0.87509	0.0099471
    0.88756	0.010196
    0.90027	0.010445
    0.91399	0.010776
    0.92656	0.011108
    0.93905	0.01144
    0.95275	0.011771
    0.96531	0.011937
    0.97788	0.012186
    0.9903	0.012517
    1.0036	0.012766
    1.0165	0.013015
    1.0305	0.013264
    1.0433	0.013512
    1.0555	0.013678
    1.0684	0.013844
    1.0813	0.014093
    1.0953	0.014341
    1.1088	0.01459
    1.1216	0.014922
    1.1342	0.01517
    1.1468	0.015419
    1.1598	0.015751
    1.173	0.016
    1.1855	0.016248
    1.1981	0.016497
    1.2109	0.016746
    1.2234	0.016994
    1.2359	0.017243
    1.2485	0.017492
    1.2617	0.017824
    1.274	0.017989
    1.2879	0.018321
    1.3008	0.01857
    1.3133	0.018819
    1.3258	0.019067
    1.3396	0.019482
    1.3521	0.019731
    1.3658	0.019979
    1.3666	0.02
    1.3666	0.02
    1.3552	0.019565
    1.339	0.018819
    1.3232	0.018238
    1.3075	0.017575
    1.2925	0.016912
    1.2767	0.016414
    1.2613	0.015917
    1.246	0.015502
    1.229	0.014922
    1.2135	0.014507
    1.1983	0.014093
    1.1821	0.013678
    1.1652	0.013264
    1.1498	0.012766
    1.1347	0.012352
    1.1188	0.01202
    1.104	0.011688
    1.0885	0.011274
    1.0741	0.011025
    1.0578	0.010528
    1.0427	0.010279
    1.0268	0.0099471
    1.0114	0.0096984
    0.99667	0.0095326
    0.98037	0.0093668
    0.96489	0.0092009
    0.94951	0.0089522
    0.93408	0.0087035
    0.9179	0.0083718
    0.90306	0.0081231
    0.88779	0.0078744
    0.87323	0.0076257
    0.85827	0.007294
    0.84307	0.0069624
    0.82848	0.0067965
    0.81305	0.0064649
    0.79407	0.0062991
    0.77941	0.0060504
    0.76295	0.0058016
    0.74784	0.0056358
    0.73284	0.0053871
    0.71758	0.0052213
    0.70286	0.0050554
    0.68754	0.0048067
    0.6729	0.0046409
    0.65766	0.0043922
    0.64156	0.0042263
    0.6267	0.0040605
    0.60995	0.0038118
    0.59348	0.003646
    0.5787	0.0034801
    0.56359	0.0033143
    0.54859	0.0032314
    0.53363	0.0031485
    0.5172	0.0030656
    0.50246	0.0029827
    0.48709	0.002734
    0.47233	0.002734
    0.45621	0.0025681
    0.43977	0.0023194
    0.42419	0.0022365
    0.40925	0.0020707
    0.39363	0.0018219
    0.37884	0.001739
    0.36264	0.0016561
    0.34707	0.0015732
    0.33261	0.0014903
    0.31731	0.0012416
    0.30263	0.0012416
    0.28706	0.0010757
    0.27238	0.00099284
    0.25739	0.00074411
    0.24221	0.0006612
    0.22727	0.0006612
    0.21208	0.00057829
    0.19603	0.00049538
    0.18087	0.00032956
    0.16519	0.00032956
    0.14897	0.00024665
    0.13399	0.00016374
    0.11886	0.000080827
    0.10411	0
    0.088471	-0.0001679
    0.072356	-0.0001679
    0.057308	-0.00025081
    0.041783	-0.0001679
    0.026661	-0.00025081
    0.011433	-0.000084993
    -0.0036438	0
    et la matrice c :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    1	0	-0,00500000000000000	4,10240000000000e-46	-6,43120000000000e-05
    1	0	-0,0100000000000000	1,41160000000000e-44	-0,000268220000000000
    1	0	-0,0150000000000000	6,50040000000000e-44	-0,000470110000000000
    1	0	-0,0225000000000000	2,78960000000000e-43	-0,000850690000000000
    1	0	-0,0337500000000000	1,33150000000000e-42	-0,00165250000000000
    1	0	-0,0506250000000000	5,21070000000000e-42	-0,00291920000000000
    1	0	-0,0759380000000000	2,21790000000000e-41	-0,00543820000000000
    1	0	-0,107400000000000	7,96230000000000e-41	-0,00911770000000000
    1	0	-0,138900000000000	2,11210000000000e-40	-0,0130590000000000
    1	0	-0,170400000000000	4,91890000000000e-40	-0,0177750000000000
    1	0	-0,206700000000000	1,03250000000000e-39	-0,0233150000000000
    1	0	-0,243000000000000	1,97490000000000e-39	-0,0293920000000000
    1	0	-0,279200000000000	3,47140000000000e-39	-0,0357090000000000
    1	0	-0,315500000000000	5,73510000000000e-39	-0,0423730000000000
    1	0	-0,351700000000000	8,96110000000000e-39	-0,0491640000000000
    1	0	-0,388000000000000	1,35020000000000e-38	-0,0564060000000000
    1	0	-0,424300000000000	1,94230000000000e-38	-0,0633870000000000
    1	0	-0,460500000000000	2,74880000000000e-38	-0,0712120000000000
    1	0	-0,496800000000000	3,75220000000000e-38	-0,0786040000000000
    1	0	-0,533100000000000	5,04290000000000e-38	-0,0865630000000000
    1	0	-0,569300000000000	6,63730000000000e-38	-0,0945370000000000
    1	0	-0,613400000000000	8,73980000000000e-38	-0,104100000000000
    1	0	-0,649200000000000	1,11770000000000e-37	-0,112500000000000
    1	0	-0,685000000000000	1,40120000000000e-37	-0,120500000000000
    1	0	-0,720800000000000	1,74230000000000e-37	-0,128900000000000
    1	0	-0,756400000000000	2,14190000000000e-37	-0,137500000000000
    1	0	-0,792100000000000	2,59490000000000e-37	-0,145600000000000
    1	0	-0,827700000000000	3,13440000000000e-37	-0,154500000000000
    1	0	-0,864700000000000	3,75640000000000e-37	-0,163600000000000
    1	0	-0,901600000000000	4,45430000000000e-37	-0,172400000000000
    1	0	-0,938600000000000	5,27940000000000e-37	-0,182100000000000
    1	0	-0,982100000000000	6,25610000000000e-37	-0,193000000000000
    1	0	-1,02600000000000	7,38320000000000e-37	-0,204300000000000
    1	0	-1,06900000000000	8,67540000000000e-37	-0,215800000000000
    1	0	-1,11300000000000	1,01180000000000e-36	-0,227000000000000
    1	0	-1,15600000000000	1,17980000000000e-36	-0,239200000000000
    1	0	-1,20000000000000	1,36440000000000e-36	-0,250800000000000
    1	0	-1,24300000000000	1,57630000000000e-36	-0,263200000000000
    1	0	-1,28700000000000	1,81150000000000e-36	-0,275400000000000
    1	0	-1,33000000000000	2,07560000000000e-36	-0,288000000000000
    1	0	-1,36700000000000	2,35150000000000e-36	-0,298700000000000
    1	0	-1,36200000000000	2,50100000000000e-36	-0,293300000000000
    1	0	-1,35700000000000	2,64000000000000e-36	-0,288100000000000
    1	0	-1,35200000000000	2,76890000000000e-36	-0,282900000000000
    1	0	-1,34200000000000	2,83080000000000e-36	-0,272500000000000
    1	0	-1,32200000000000	2,75920000000000e-36	-0,252400000000000
    1	0	-1,28200000000000	2,44940000000000e-36	-0,215200000000000
    1	0	-1,23200000000000	2,02550000000000e-36	-0,172700000000000
    1	0	-1,18200000000000	1,62420000000000e-36	-0,135500000000000
    1	0	-1,13200000000000	1,25220000000000e-36	-0,102900000000000
    1	0	-1,08200000000000	9,19040000000000e-37	-0,0747870000000000
    1	0	-1,03200000000000	6,33240000000000e-37	-0,0512200000000000
    1	0	-0,981600000000000	3,96780000000000e-37	-0,0319890000000000
    1	0	-0,931600000000000	2,11970000000000e-37	-0,0170650000000000
    1	0	-0,881600000000000	7,93050000000000e-38	-0,00638210000000000
    1	0	-0,831600000000000	5,06570000000000e-39	-0,000407660000000000
    1	0	-0,781600000000000	0	0
    1	0	-0,731600000000000	0	0
    1	0	-0,681600000000000	0	0
    1	0	-0,631600000000000	0	0
    1	0	-0,581600000000000	0	0
    1	0	-0,531600000000000	0	0
    1	0	-0,481600000000000	0	0
    1	0	-0,431600000000000	0	0
    1	0	-0,381600000000000	0	0
    1	0	-0,331600000000000	0	0
    1	0	-0,281600000000000	0	0
    1	0	-0,231600000000000	0	0
    1	0	-0,181600000000000	0	0
    1	0	-0,131600000000000	0	0
    1	0	-0,0816000000000000	0	0
    1	0	-0,0316000000000000	0	0
    1	0	0	0	0
    j'ai essayé d'utiliser Unique comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [Xuniq,Iuniq]=unique(Uexp);
    Fint=interp1(Uexp(Iuniq),RFexp(Iuniq),-c(:,3),'linear');
    mais voila la courbe qui me donne :
    je ne sait pas quoi faire
    Images attachées Images attachées

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Citation Envoyé par foufi86 Voir le message
    mais il sort un message d'erreur que les valeurs de X doivent être identique :
    Au contraire, elles ne doivent pas être identiques.

    Qu'as-tu tracé dans la figure que tu montres? Peux-tu nous montrer le code utilisé pour obtenir cette figure?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Mécanique
    Inscrit en
    Avril 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Mécanique
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 39
    Points : 18
    Points
    18
    Par défaut
    voila ce que j'ai entrée
    en utilisant bien sur ce que j'ai indiquée(UNIQUE)
    aussi si j'essaye de représenter la courbe expérimentale et la courbe interpolée voila le résultat ci joints.
    je ne sait pas pourquoi Fint représente les deux premières valeurs qui sont négatifs???
    j’espère que c'est bien expliqué mon problème.
    Images attachées Images attachées  

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Oui le code est juste et le résultat est cohérent avec le code. Après c'est peut-être la méthode elles-mêmes qu'il faut revoir? A quoi est supposé servir l'interpolation? Tes données expérimentales montrent que les points définissent une enveloppe et non une courbe, c'est donc normal que l'interpolation te donne une courbe un peu bizarre.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Mécanique
    Inscrit en
    Avril 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Mécanique
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 39
    Points : 18
    Points
    18
    Par défaut
    salut
    non en faite mes données expérimentales représentent un essai d'indentation et donc un charge et un décharge et c'est pour ça que ça représente un enveloppe

  6. #6
    Membre à l'essai
    Femme Profil pro
    Mécanique
    Inscrit en
    Avril 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Mécanique
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 39
    Points : 18
    Points
    18
    Par défaut
    salut
    encore ce problème est non résolu en fait si je lance mon programme d'optimisation il me retourne tjr le point initial et donc il ne fait plus l'optimisation
    y'a t-il autre chose a faire autre que le INTERP1???????????? c'est vraiment bloqué.
    j'en ai besoin d'aide svp

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    personnellement je ne vois pas d'erreur dans le code, et si Magellan n'en voit pas c'est presque sur qu'il n'y en a pas
    je pense que si lors de l'optimisation tu reste sur les paramètres initiaux,il peut y avoir trois raisons:

    - les options de ton optimiseur: tu dois peut etre baisser le seuil d'erreur (l'erreur que tu as mis n'est ainsi pas assez importante pour le premier pas, et il considere que cette solution est bonne)
    - tu n'as peut etre pas pris la valeur absolu de l'erreur à minimiser ?? il faut faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    abs(pointExperimentaux-pointCalcul)
    pour definir l'erreur
    - l'expression mathematique que tu utilises ne permet pas d'ajuster le comportement experimental

  8. #8
    Membre à l'essai
    Femme Profil pro
    Mécanique
    Inscrit en
    Avril 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Mécanique
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 39
    Points : 18
    Points
    18
    Par défaut
    salut
    merci pour 21did21:
    en fait la j'ai changer les paramètres de mon optimiseur c'est bien il me donne les paramètres que je veut mais je pense pas que c'est assez suffisant comme résultats(j'obtient pa ce que j veu)
    quelqu'un m'as dit puisque j'ai une courbe charge et décharge(enveloppe)
    il faut la décomposer en deux et je fait une interpolation de chacune a part mais
    c'est a dire pour le calcul d'erreur il faut faire la somme de deux erreurs:
    -une pour la courbe charge et autre pour la courbe décharge.
    m question est est ce que je peut utiliser interp1 si les valeurs de x sont décroissantes??(interp1(x,y,xi))
    merci

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Citation Envoyé par foufi86 Voir le message
    en fait la j'ai changer les paramètres de mon optimiseur c'est bien il me donne les paramètres que je veut mais je pense pas que c'est assez suffisant comme résultats(j'obtient pa ce que j veu)
    2 éventuelles raisons:
    - soit la formule "physique" que tu utilises n'est pas vraiment appropriée à la physique du problème
    - soit tes paramètres d'entrée que tu donnes à l'algo ne sont pas assez proches de la solution

    Citation Envoyé par foufi86 Voir le message
    quelqu'un m'as dit puisque j'ai une courbe charge et décharge(enveloppe)
    il faut la décomposer en deux et je fait une interpolation de chacune a part mais c'est a dire pour le calcul d'erreur il faut faire la somme de deux erreurs:
    -une pour la courbe charge et autre pour la courbe décharge.
    ca me parait bizarre car au lieu les parametres que tu vas identifier seront pas les memes pour la charge et la decharge? or dans le probleme physique ils sont censé être les meme lors de la charge et la decharge?

    Citation Envoyé par foufi86 Voir le message
    question est est ce que je peut utiliser interp1 si les valeurs de x sont décroissantes??(interp1(x,y,xi))
    merci
    je pense mais je laisse les expert matlab te repondre

  10. #10
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Citation Envoyé par foufi86 Voir le message
    est est ce que je peut utiliser interp1 si les valeurs de x sont décroissantes??(interp1(x,y,xi))
    Oui

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    x = 10:-1:1;
    y = rand(1,10);
     
    xi = 10:-.5:1;
     
    yi = interp1(x,y,xi);
     
    figure
    plot(x,y,'b-',xi,yi,'ro')
    Images attachées Images attachées  
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  11. #11
    Membre à l'essai
    Femme Profil pro
    Mécanique
    Inscrit en
    Avril 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Mécanique
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 39
    Points : 18
    Points
    18
    Par défaut
    merci pour votre réponse mais j'ai tjrs un problème je suis entrain de développer une autre approche j’espère bien que ça va marcher mais d'abord juste j'ai une question si j'ai un vecteur je détermine tout d'abord le maximum de ce vecteur ainsi que son indice .
    Ma question comment je peut lire le vecteur qui commence de cet indice jusqu’à la fin du vecteur?
    merci

  12. #12
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Tout simlplement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    monVecteur = rand(10,1);
    [M indice] = max(monVecteur);
    monVecteur(indice:end)

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    pour avoir le max d'un vecteur tu utilise la commande "max", va voir dans l'aide de matlab il me semble que c'est:

    [a b]=max(tonVecteur);

    a contiendra le max et b l'indice où se trouve le max.

    Ensuite tu peux facilement parcourir le vecteur en faisant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i=b:1:length(tonVecteur)
    tonVecteur(i);
    end
    edit:
    grillé par jerome

  14. #14
    Membre à l'essai
    Femme Profil pro
    Mécanique
    Inscrit en
    Avril 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Mécanique
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 39
    Points : 18
    Points
    18
    Par défaut
    ey oui merci j'ai pas utilisé une boucle for mais plutôt comme il a dit winjerome merciiiiiiiiiiiiii

  15. #15
    Membre à l'essai
    Femme Profil pro
    Mécanique
    Inscrit en
    Avril 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Mécanique
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 39
    Points : 18
    Points
    18
    Par défaut bonjour
    j'ai amélioré mon petit code mais j'ai encore un tout petit problème il y a une discontinuité entre les deux branches de la courbe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    function f = fonctapproche1(lam)
    global Uexp RFexp
    %lecture des données expérimentaux 
    fid =fopen('données expérimentaux.m','r');
    M = fscanf(fid,'%e',[1,1]);
    xy=fscanf(fid,'%e%e',[2,M]);
    xy1=xy';
    Uexp=xy1(:,1) ; %vesteur colonne U2- déplacement 
    RFexp=xy1(:,2) ;  %vecteur colonne RF2- réaction
    mef(lam);
    rf4;
    [Umax,I]=max(Uexp);
    [Cmax,J]=max(-c(:,3));
    ta=size(Uexp);
    tb=size(-c(:,3));
    Fint1=interp1(Uexp(1:I),RFexp(1:I),-c(1:J,3),'spline');
    [Xuniq,Iuniq]=unique(Uexp(I:ta));
    A=Uexp(I:ta);
    B=RFexp(I:ta);
    Fint2=interp1(A(Iuniq),B(Iuniq),-c(J:tb,3),'spline');
    b=0;
    e=0;
    Fsim1=-c(1:J,5);
    Fsim2=-c(J:tb,5);
    tc=size(Fint1,1);
    td=size(Fint2,1);
    for i=1:tc
        X=(Fint1(i)-Fsim1(i)).^2;
        b=b+X;
    end
    for j=1:td;
        Y=(Fint2(j)-Fsim2(j)).^2;
        e=e+Y;
    end
    f=e+b;
    plot(-c(J:tb,3),Fint2,-c(1:J,3),Fint1,-c(:,3),-c(:,5));
    alors si je représente la courbe d'interpolation j'obtiens une courbe avec discontinuité voir pièce jointe
    Images attachées Images attachées  

  16. #16
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    au lieu d'utiliser une seule courbe pour l'utilisation alors tu devrait en utiliser deux:

    - une pour la charge et une pour la decharge

    tu fais l'identification que dans la partie ou la courbe experimental est defini, apres tu pourras faire une interpolation à la limite ou truc dans ce genre pour ciontinuer la courbe...

    ps: je ne sais pas trop comment t'aider car je ne suis pas expert de l'indentation mais voici peut etre quelques pistes qui pourront t'aider, bonne chance

  17. #17
    Membre à l'essai
    Femme Profil pro
    Mécanique
    Inscrit en
    Avril 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Mécanique
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 39
    Points : 18
    Points
    18
    Par défaut salut
    merci bien pour ton aide
    mais c'est déjà ce que j'ai fait j'ai utilisé deux courbes une pour la charge et l'autre pour la décharge
    mais c'est bon y pas de problème même avec ce petit problème j'arrive a faire mon identification et c'a fitte très bien
    merci

  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    oubli pas de cliquer sur "resolu"
    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. erreur fonction interp1
    Par oliv27400 dans le forum MATLAB
    Réponses: 4
    Dernier message: 12/02/2013, 09h58
  2. [interp1] fonction non monotone
    Par kis93 dans le forum MATLAB
    Réponses: 3
    Dernier message: 30/09/2008, 07h29
  3. problème avec la fonction interp1
    Par Amokrane dans le forum MATLAB
    Réponses: 2
    Dernier message: 15/02/2008, 17h39
  4. Réponses: 3
    Dernier message: 17/07/2007, 15h53
  5. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 20h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo