|
| Et matlab spørgsmål Fra : Lars |
Dato : 02-05-06 17:30 |
|
Håber det er ok i denne gruppe.
Har en matlab simulink model der skal køres med variabel step size(skal være
variabel pga. tid og præcision), og får generet en serier af data som skal
plottes. Ændre lidt på modellen og kører den igen. Kan godt plotte de 2
serier i samme plot, men når jeg bare ønsker at se differencen, opstår der
et problem da tids akserne ikke er ens. Nogen der har en smart løsning, der
helts ikke indeholder alt for mange if sætninger(Forholdsvis store data
serie).
\Lars
| |
SBJ (02-05-2006)
| Kommentar Fra : SBJ |
Dato : 02-05-06 18:18 |
|
On Tue, 2 May 2006 18:30:28 +0200, "Lars"
<Ingenmailstak@trorduforstårhvorfor.dk> wrote:
>Håber det er ok i denne gruppe.
>
>Har en matlab simulink model der skal køres med variabel step size(skal være
>variabel pga. tid og præcision), og får generet en serier af data som skal
>plottes. Ændre lidt på modellen og kører den igen. Kan godt plotte de 2
>serier i samme plot, men når jeg bare ønsker at se differencen, opstår der
>et problem da tids akserne ikke er ens. Nogen der har en smart løsning, der
>helts ikke indeholder alt for mange if sætninger(Forholdsvis store data
>serie).
>
>\Lars
>
Hej Lars,
Brug en length kommando til at finde den længste af de to arrays, og
find forskellen i antal poster. Derefter lægger du et tilsvarende
antal '0' værdier ind i den korteste af de to.
Det kræver ikke en gang en if
mvh,
Sune
| |
Kenneth Brun Nielsen (02-05-2006)
| Kommentar Fra : Kenneth Brun Nielsen |
Dato : 02-05-06 21:51 |
|
"SBJ" <sbjepsen@hotmail.com> skrev i en meddelelse
news:ds4f52pj89cmculpaqnmeokglkb1oim3qo@4ax.com...
> On Tue, 2 May 2006 18:30:28 +0200, "Lars"
> <Ingenmailstak@trorduforstårhvorfor.dk> wrote:
>
>>Håber det er ok i denne gruppe.
>>
>>Har en matlab simulink model der skal køres med variabel step size(skal
>>være
>>variabel pga. tid og præcision), og får generet en serier af data som skal
>>plottes. Ændre lidt på modellen og kører den igen. Kan godt plotte de 2
>>serier i samme plot, men når jeg bare ønsker at se differencen, opstår der
>>et problem da tids akserne ikke er ens. Nogen der har en smart løsning,
>>der
>>helts ikke indeholder alt for mange if sætninger(Forholdsvis store data
>>serie).
> Brug en length kommando til at finde den længste af de to arrays, og
> find forskellen i antal poster. Derefter lægger du et tilsvarende
> antal '0' værdier ind i den korteste af de to.
>
> Det kræver ikke en gang en if
Men det løser heller ikke problemet. Jeg tror du har misforstået det. Det
bliver jo en noget utroværdig differens, hvis du bare indsætter nulværdier -
for bare at nævne en af manglerne..
/Kenneth
| |
Lars (02-05-2006)
| Kommentar Fra : Lars |
Dato : 02-05-06 22:25 |
|
"SBJ" <sbjepsen@hotmail.com> wrote in message
news:ds4f52pj89cmculpaqnmeokglkb1oim3qo@4ax.com...
> On Tue, 2 May 2006 18:30:28 +0200, "Lars"
> <Ingenmailstak@trorduforstårhvorfor.dk> wrote:
>
>>Håber det er ok i denne gruppe.
>>
>>Har en matlab simulink model der skal køres med variabel step size(skal
>>være
>>variabel pga. tid og præcision), og får generet en serier af data som skal
>>plottes. Ændre lidt på modellen og kører den igen. Kan godt plotte de 2
>>serier i samme plot, men når jeg bare ønsker at se differencen, opstår der
>>et problem da tids akserne ikke er ens. Nogen der har en smart løsning,
>>der
>>helts ikke indeholder alt for mange if sætninger(Forholdsvis store data
>>serie).
>>
>>\Lars
>>
>
> Hej Lars,
>
> Brug en length kommando til at finde den længste af de to arrays, og
> find forskellen i antal poster. Derefter lægger du et tilsvarende
> antal '0' værdier ind i den korteste af de to.
>
> Det kræver ikke en gang en if
>
> mvh,
> Sune
Den går desværre ikke, da der er meget stor forkel på længden af de 2
arrays, og dermed i tids arrayet:(
\Lars
| |
es335 (03-05-2006)
| Kommentar Fra : es335 |
Dato : 03-05-06 06:39 |
|
Det du skal gøre er at rekonstruere dine tidsserier. Du kan anvende en
metode som kaldes "sample-and-hold" (søg litteratur for detailjer) som
går ud på at beholde den seneste variabel 1 indtil en nærliggende
variabel 2 er tilrådighed. Selvom dette er en nulte-ordens er den
brugt.
Bemærk at du herved også ændrer på din tidsopløsning idet du
typisk vil få en sample frekvens der er lidt højere end den originale
tidsserie.
Lars skrev:
> Håber det er ok i denne gruppe.
>
> Har en matlab simulink model der skal køres med variabel step size(skal være
> variabel pga. tid og præcision), og får generet en serier af data som skal
> plottes. Ændre lidt på modellen og kører den igen. Kan godt plotte de 2
> serier i samme plot, men når jeg bare ønsker at se differencen, opstår der
> et problem da tids akserne ikke er ens. Nogen der har en smart løsning, der
> helts ikke indeholder alt for mange if sætninger(Forholdsvis store data
> serie).
>
> \Lars
| |
sbjepsen@hotmail.com (03-05-2006)
| Kommentar Fra : sbjepsen@hotmail.com |
Dato : 03-05-06 06:44 |
|
Ah undskyld - det havde jo nok hjulpet hvis jeg havde læst *hele* dit
indlæg
Jeg foreslår så du tager det array med den største afstand mellem
tidsstep-værdierne, og bruger interpolationen yi =
interp1(x,y,xi,method). Hvor x er tidsværdierne, y er din data og xi
er et array med de tidsstep-værdier der skal interpoleres for, dvs x
værdierne i dit data array med mindst afstand mellem tidsstep.
Det burde så være muligt at lave en differens mellem samhørende
tidsværdier, som så kan plottes
De data der er interpoleret frem til er jo selvfølgelig 'fiktive', men
metoden burde give en indikation på forholdet mellem de to modeller.
mvh,
Sune
| |
Lars (03-05-2006)
| Kommentar Fra : Lars |
Dato : 03-05-06 12:31 |
|
Tak! Det virker;)
<sbjepsen@hotmail.com> wrote in message
news:1146635046.612439.33440@u72g2000cwu.googlegroups.com...
Ah undskyld - det havde jo nok hjulpet hvis jeg havde læst *hele* dit
indlæg
Jeg foreslår så du tager det array med den største afstand mellem
tidsstep-værdierne, og bruger interpolationen yi =
interp1(x,y,xi,method). Hvor x er tidsværdierne, y er din data og xi
er et array med de tidsstep-værdier der skal interpoleres for, dvs x
værdierne i dit data array med mindst afstand mellem tidsstep.
Det burde så være muligt at lave en differens mellem samhørende
tidsværdier, som så kan plottes
De data der er interpoleret frem til er jo selvfølgelig 'fiktive', men
metoden burde give en indikation på forholdet mellem de to modeller.
mvh,
Sune
| |
|
|