Permalänk
Medlem

MatLAB till Visual Basic

Tjena!
Har tidigare erfarenhet från att programmera i VB miljö från gymnasiet och nu på högskolan så kör vi MatLAB. Jag tänkte skriva ett program i VB miljö som beräknar hållfasthet osv för pelare. Jag har ett halvfärdigt program i MatLAB som en polare har gjort som jag nu ska föra över till VB som sagt. Det jag undrar är om jag har en vektor A = [25 29 34] säger vi, kan jag få in dom på samma sätt i VB? jag har dim A(24) as integer men jag vill gärna inte behöva föra in A(1) = ... osv utan vill kunna skriva att A = "alla värden här"... Hur går man tillväga? Lärde mig aldrig riktigt vektorer på gymnasiet... Tackar!

Visa signatur

AMD Phenom x4 965 @ Stock || ASUS M4N68T LE V2 || 8Gb Corsair XMS3 RAM || Corsair HX 750W || XFX GTX260

Permalänk
Medlem

Nu har jag ingen större erfarenhet av just VB.
Men borde du inte kunna skriva

Dim answers As Int() = Int() {1,2,3}

Permalänk
Medlem
Skrivet av phantom:

Nu har jag ingen större erfarenhet av just VB.
Men borde du inte kunna skriva

Dim answers As Int() = Int() {1,2,3}

Tackar, funkade med något liknande med det du rekommendera, bara o ta bort int efter likhetstecknet. Nu försöker jag bara förlänga en vektor med 10^-6... Att det ska vara så svårt jämfört med MatLAB alltså... Kanske lika bra o lägga ner projektet ^^

Visa signatur

AMD Phenom x4 965 @ Stock || ASUS M4N68T LE V2 || 8Gb Corsair XMS3 RAM || Corsair HX 750W || XFX GTX260

Permalänk
Medlem

Int() är ingen vektor, det är en array.

En stor skillnad mellan en vektor och en array är att en vektor har en riktning.

Om vi tänker 2d så har en vektor en punkt(x,y), en längd och en riktning vilket gör att man kan rita den som ett sträck. Matlab har detta inbyggt och håller koll på detta åt en.

En array är en samling värden, i detta fallet av typen integer. För vb är det bara siffror. Man får själv skriva logiken som håller koll på vad som är vad. En annan sak att tänka på när man använder stora (stora som i många siffror) tal är att int har en begränsning som jag nu inte kan utantill. Använder sällan så stora tal. Kan vara så att du behöver övergå till long istället för int.

I ditt fall tror jag det är lite onödigt mycket jobb när det redan finns i matlab, om du inte gör det för att det är kul förstås.

Visa signatur

He who hasn't hacked assembly language as a youth has no heart. He who does so as an adult has no brain.
~John Moore

Permalänk
Hedersmedlem
Skrivet av Anaii:

Int() är ingen vektor, det är en array.

En stor skillnad mellan en vektor och en array är att en vektor har en riktning.

Om vi tänker 2d så har en vektor en punkt(x,y), en längd och en riktning vilket gör att man kan rita den som ett sträck. Matlab har detta inbyggt och håller koll på detta åt en.

Nja, det enda som krävs för att något skall få kallas vektor är väl att ett gäng värden (till exempel koordinater i något vektorrum) har grupperats tillsammans? I 2d-fallet (och 3d-fallet) råkar det vara lätt att visualisera sådana (startkoordinaten framgår dock inte av vektorn), men det viktiga är just sifferföljden och inget hindrar att man till exempel använder ett fält (array) för att representera denna. De flesta språk har dock inga inbygda funktioner för att utföra beräkningar med sådana.

Permalänk
Medlem
Skrivet av Cimbom3:

Tackar, funkade med något liknande med det du rekommendera, bara o ta bort int efter likhetstecknet. Nu försöker jag bara förlänga en vektor med 10^-6... Att det ska vara så svårt jämfört med MatLAB alltså... Kanske lika bra o lägga ner projektet ^^

MATLAB är ju lite gjort för sånt här (därav namnet; Matrix Laboratory), så jag ser inte riktigt syftet med att gå över till VB. Håll dig till vektoroperationer i MATLAB (dvs. undvik loopar) så kommer du ha en effektiv och enklare lösning än med VB.

Skrivet av Anaii:

En stor skillnad mellan en vektor och en array är att en vektor har en riktning.

Om vi tänker 2d så har en vektor en punkt(x,y), en längd och en riktning vilket gör att man kan rita den som ett sträck. Matlab har detta inbyggt och håller koll på detta åt en.

Njae, en vektor är egentligen bara ett par tal som bildar någon sorts punkt i ett vektorrum. Riktning och längd fås sedan ur egenskaperna hos vektorrummet. Det som skiljer MATLABs vektorer från de fält som används i många programmeringsspråk är just att de tillhör vektorrum och att det därför finns vissa definierade operationer (inre/yttre produkt och så vidare), och dessa implementerar MATLAB effektivt (till skillnad från andra programmeringsspråk där du måste definiera sådana operationer själv).

Permalänk
Medlem
Skrivet av You:

MATLAB är ju lite gjort för sånt här (därav namnet; Matrix Laboratory), så jag ser inte riktigt syftet med att gå över till VB. Håll dig till vektoroperationer i MATLAB (dvs. undvik loopar) så kommer du ha en effektiv och enklare lösning än med VB.

Njae, en vektor är egentligen bara ett par tal som bildar någon sorts punkt i ett vektorrum. Riktning och längd fås sedan ur egenskaperna hos vektorrummet. Det som skiljer MATLABs vektorer från de fält som används i många programmeringsspråk är just att de tillhör vektorrum och att det därför finns vissa definierade operationer (inre/yttre produkt och så vidare), och dessa implementerar MATLAB effektivt (till skillnad från andra programmeringsspråk där du måste definiera sådana operationer själv).

Problemet är ju dock att jag alltid måste köra programet i matlab isf vilket i sig inte arg några problem i skolan eller hemma men nån gång kanske det behövs nån annanstans och i vb så får man ju ..exe fil som kan köras hela tiden. Om det går att göra matlab filen till en körbar fil utanför matlab så är det den lättaste lösningen...

Visa signatur

AMD Phenom x4 965 @ Stock || ASUS M4N68T LE V2 || 8Gb Corsair XMS3 RAM || Corsair HX 750W || XFX GTX260

Permalänk
Hedersmedlem

Förmodligen vill du också använda något bibliotek för matrisberäkningar (till exempel Mapack) (om du inte vill implementera all funktionalitet själv).

Permalänk
Medlem
Skrivet av Cimbom3:

Problemet är ju dock att jag alltid måste köra programet i matlab isf vilket i sig inte arg några problem i skolan eller hemma men nån gång kanske det behövs nån annanstans och i vb så får man ju ..exe fil som kan köras hela tiden. Om det går att göra matlab filen till en körbar fil utanför matlab så är det den lättaste lösningen...

Går det inte att skapa en .exe fil eller liknande från matlab?

Hade för mig att vi gjorde det när vi pysslade med matlab i skolan... Kanske minns fel. En googlesökning borde ge bra svar, som vanligt, dock.

Visa signatur

|| Intel 8700K || MSI GTX 1080 TI Gaming X || Xonar DG || Samsung 750 EVO 500GB & Kingston A2000 1TB & Samsung 960 EVO 250GB || XFX XXX 650W || Antec P183 || Asus G-Sync RoG Swift PG279Q || Dell XPS 15 || Thinkpad X220

The Force is like Duct Tape, it has a light side, a dark side, and holds the universe together.

Permalänk
Hedersmedlem
Skrivet av Newklear:

Går det inte att skapa en .exe fil eller liknande från matlab?

Hade för mig att vi gjorde det när vi pysslade med matlab i skolan... Kanske minns fel. En googlesökning borde ge bra svar, som vanligt, dock.

Förutsatt att man har rätt toolbox brukar både kunna generera c-kod och kompilera exe-filer (som dock kräver att det ohemult stora matlab compiler runtime finns på den dator som skall köra programmet).

Permalänk
Medlem
Skrivet av Elgot:

Förutsatt att man har rätt toolbox brukar både kunna generera c-kod och kompilera exe-filer (som dock kräver att det ohemult stora matlab compiler runtime finns på den dator som skall köra programmet).

Tänkte väl att det fanns någon hake med det

Visa signatur

|| Intel 8700K || MSI GTX 1080 TI Gaming X || Xonar DG || Samsung 750 EVO 500GB & Kingston A2000 1TB & Samsung 960 EVO 250GB || XFX XXX 650W || Antec P183 || Asus G-Sync RoG Swift PG279Q || Dell XPS 15 || Thinkpad X220

The Force is like Duct Tape, it has a light side, a dark side, and holds the universe together.

Permalänk
Hedersmedlem
Skrivet av Newklear:

Tänkte väl att det fanns någon hake med det

Hehe, den största haken är licenskostnaderna (men eventuellt ingår de där i studentversionen).

Permalänk
Medlem
Skrivet av Cimbom3:

Problemet är ju dock att jag alltid måste köra programet i matlab isf vilket i sig inte arg några problem i skolan eller hemma men nån gång kanske det behövs nån annanstans och i vb så får man ju ..exe fil som kan köras hela tiden. Om det går att göra matlab filen till en körbar fil utanför matlab så är det den lättaste lösningen...

Jag har läst mycket gott om Python och tredjepartsbiblioteket NumPy, det kanske är ett bra alternativ? http://www.scipy.org/NumPy_for_Matlab_Users

Visa signatur

Kom-pa-TI-bilitet