Kirjoittaja Aihe: Octave  (Luettu 4310 kertaa)

welmar

  • Käyttäjä
  • Viestejä: 1582
    • Profiili
Octave
« : 13.01.17 - klo:16.28 »
Olen yrittänyt tutkia Octaven ja Matlabin ohjeita lukea mutta en vielä ole ymmärtänyt miten saisin graafisesti kysyttyä jotain ja vastauksen myös samanlaiseen ikkunaan. Hiukan huonosti osaan selittää mutta laitan kuvan jossa on ohjelma jonka tarkoitus kysyä monikulmion kulmien määrää kysymysikkunassa ja sitten saada vastaus myös samankaltaisella ikkunalla. Octave ei myöskään avaa Matlabilla tehtyjä tiedostoja vaan kun yrittää avata niin Octave käynnistyy mutta sammuu heti. Kokeiltu m-tiedostoja jotka on tehty vanhalla olisiko jopa 2009 matlabilla ja uusimmalla versiolla.
EDIT: m-tiedostot sain aukeamaan editoriin kunhan Octave on käynnissä, suoraan tiedostoa klikkaamalla ei onnistu.
« Viimeksi muokattu: 22.02.17 - klo:18.55 kirjoittanut Tomin »

kamara

  • Käyttäjä
  • Viestejä: 2488
    • Profiili
Vs: Octave
« Vastaus #1 : 13.01.17 - klo:17.33 »
Tämä on varmaan tuttu, mutta laitetaan nyt kuitenkin...

https://www.gnu.org/software/octave/doc/v4.0.3/Dialog-Box-Functions.html

Koodia: [Valitse]
s=inputdlg("oukki doukki","otsikko2")

welmar

  • Käyttäjä
  • Viestejä: 1582
    • Profiili
Vs: Octave
« Vastaus #2 : 14.01.17 - klo:09.31 »
Joo, eli ton input boxin saan kyllä toimimaan mutta sen jälkeen mikään ei sitten toimikkaan... Eli kun laitan inputikkunaan vaikka kulmien määräksi 5 niin ei tule messagaikkunaa jossa tulos. Ei laske edes konsolissa eli muuttja menee johonkin väärää paikkaan tai muuten vaan väärin. Menen itsekin sekaisin omista selityksistäni  siksi laitoin kuvan edelliseen viestiin jos siitä vois saada paremman käsityksen. Ongelma on kai muuttajan sijoituksessa, tai no parempi taaslaittaa kuva kun en osaa selittää...
EDIT: Nyt ymmärsin että inputboxi tallentaa siis muuttuja paikkaan 1x1. On vielä paljon opeteltavaa...
« Viimeksi muokattu: 14.01.17 - klo:10.01 kirjoittanut welmar »

kamara

  • Käyttäjä
  • Viestejä: 2488
    • Profiili
Vs: Octave
« Vastaus #3 : 14.01.17 - klo:13.48 »
Ymmärsinkö oikein, että ongelma ratkesi ?

welmar

  • Käyttäjä
  • Viestejä: 1582
    • Profiili
Vs: Octave
« Vastaus #4 : 14.01.17 - klo:17.03 »
Ymmärsinkö oikein, että ongelma ratkesi ?
Ei vaan haluaisin vastauksen dialogboxiin mutta nyt ohjelma ei laske mitään. Tälläinen on toimiva ohjelma konsolissa
Koodia: [Valitse]
%Säännöllinen monikulmio
input('Anna kulmien määrä : ')
n = ans
kulmat = ((n-2)/n)*180
disp(kulmat)
Eli ainakin pitäisi keksiä miten saan n = cell 1x1. Noin se ei aikaan toimi ja sitten vielä tulostettua se messageboxiin.
« Viimeksi muokattu: 14.01.17 - klo:17.07 kirjoittanut welmar »

kamara

  • Käyttäjä
  • Viestejä: 2488
    • Profiili
Vs: Octave
« Vastaus #5 : 14.01.17 - klo:19.52 »
Toimiiko seuraava ?

Koodia: [Valitse]
inputdlg('Anna kulmien määrä :',"Säännöllinen monikulmio")
n=base2dec(ans,10)
kulmat = ((n-2)/n)*180
dec2base(kulmat,10)
msgbox(ans)

welmar

  • Käyttäjä
  • Viestejä: 1582
    • Profiili
Vs: Octave
« Vastaus #6 : 15.01.17 - klo:00.13 »
Joo! Kiitos paljion. Mitä noi komennot base2dec ja toisinpäin dec2base oikein tarkoittaa? Ilmeisesti niillä haetaan muuttujaa mutta miten just arvo 10?
EDIT: Jos laittaa kulmia 7 niin ei toimi.
« Viimeksi muokattu: 15.01.17 - klo:00.28 kirjoittanut welmar »

kamara

  • Käyttäjä
  • Viestejä: 2488
    • Profiili
Vs: Octave
« Vastaus #7 : 15.01.17 - klo:08.29 »
Joo! Kiitos paljion. Mitä noi komennot base2dec ja toisinpäin dec2base oikein tarkoittaa? Ilmeisesti niillä haetaan muuttujaa mutta miten just arvo 10?
EDIT: Jos laittaa kulmia 7 niin ei toimi.

Kyseessä on 10-kantainen numero.

Joo näkyy tykkäävän huonoa desimaaleista. Tutkitaan vielä, josko löytyisi parempi funktio.

kamara

  • Käyttäjä
  • Viestejä: 2488
    • Profiili
Vs: Octave
« Vastaus #8 : 15.01.17 - klo:08.42 »
Toimisikohan tämä paremmin... ?
Koodia: [Valitse]
inputdlg('Anna kulmien määrä :',"Säännöllinen monikulmio")
n=str2double(ans)
kulmat = ((n-2)/n)*180
mat2str(kulmat)
msgbox (ans)


Edit - Minulle toi octave ei ole kovinkaan tuttu, vaan googlasin vastauksen. Olen kyllä ollut tietoinen Octaven hienoista ominaisuuksista.
« Viimeksi muokattu: 15.01.17 - klo:08.45 kirjoittanut kamara »

kamara

  • Käyttäjä
  • Viestejä: 2488
    • Profiili
Vs: Octave
« Vastaus #9 : 15.01.17 - klo:09.39 »
Myös seuraava taitaa toimia halutulla tavalla...
Koodia: [Valitse]
inputdlg('Anna kulmien määrä :',"Säännöllinen monikulmio")
n=str2double(ans)
kulmat = ((n-2)/n)*180
num2str(kulmat)
msgbox (ans)

welmar

  • Käyttäjä
  • Viestejä: 1582
    • Profiili
Vs: Octave
« Vastaus #10 : 22.02.17 - klo:16.57 »
Mitähän teen väärin kun plot-komennolla piste menee ihan väärään paikkaan?
Koodia: [Valitse]
clear
%kärkipisteet
A = [0 0]
B = [10 0]
C = [10 -4]
D = [0 -4]

AB = B-A
BC = C-B
norm(BC)
BCk=[-BC(2),BC(1)]%BC vektorin normaali
E = B + BCk
%piirretään suorakulmio
 x=[A(1),B(1),C(1),D(1),A(1)]
 y=[A(2),B(2),C(2),D(2),A(2)]
 figure(1)
 hold on
 plot(x,y,'linewidth',2)
 plot([E],'k+','linewidth',4)
 grid
 axis equal
Octave kyllä laskee E:n arvoksi 14  0 johon haluaisin pisteen tai vektorin mutta jostain syystä se heittää pisteen(tai oikeastaan kaksi pistetä) ihan väärään paikkaan. Tässä tapauksessa 2 ,14  ja 3,0 (noin suunnilleen kuvasta katsottuna) Saan toki jatkettua suorakulmiota oikein näin
Koodia: [Valitse]
x=[A(1),B(1),C(1),D(1),A(1),E(1)]
 y=[A(2),B(2),C(2),D(2),A(2),E(2)]
mutta se ei auta minua ymmärtämään plot-komennon omituisuuksia yhtään paremmin.....

kamara

  • Käyttäjä
  • Viestejä: 2488
    • Profiili
Vs: Octave
« Vastaus #11 : 22.02.17 - klo:17.59 »
Toimisiko seuraava ?

Koodia: [Valitse]
plot([E(1)],[E(2)],'k+','linewidth',4)

Tai seuraava...
Koodia: [Valitse]
plot(E(1),E(2),'k+','linewidth',4)

kamara

  • Käyttäjä
  • Viestejä: 2488
    • Profiili
Vs: Octave
« Vastaus #12 : 22.02.17 - klo:18.28 »
Tarkennusta...
Koodia: [Valitse]
Fnk= [0 15 25 -5 4]
plot(Fnk,'k-','linewidth',4)

On sama kuin...
Koodia: [Valitse]
clear
Fnk= [0 15 25 -5 4]
n=[1 2 3 4 5]
plot(n,Fnk,'k-','linewidth',4)

welmar

  • Käyttäjä
  • Viestejä: 1582
    • Profiili
Vs: Octave
« Vastaus #13 : 22.02.17 - klo:18.36 »
Toimii. Kokeilinkin noin mutta aina ei tullut oikeita kuvia johtuen Octaven häiritsevästä ominaisuudesta ettei se suorita koko koodia loppuun kerralla vaan pitää painaa komentoikkunassa välilyöntiä tai enteriä. Eli komentoikkunassa koodin suoritus taukoaa näköjään less-komennon vuoksi. Miten sen saa pois? Matlabis voi suorittaa vaikka kuinka pitkiä koodipätkiä . RATKAISU: Lisäsin koodin loppuun more ja nyt toimii oikein. Vähän jäi silti häiritsemään miksei komento plot([E]) toimi tai mitä se tekee tarkalleen?

kamara

  • Käyttäjä
  • Viestejä: 2488
    • Profiili
Vs: Octave
« Vastaus #14 : 22.02.17 - klo:19.04 »
Vähän jäi silti häiritsemään miksei komento plot([E]) toimi tai mitä se tekee tarkalleen?

Se tulkitsee molemmat E:n arvot Y:n avoiksi, kuten edellisessä viestissäni yritin kertoa.

Elikkä tulostaa seuraavaan tapaan...
Koodia: [Valitse]
clear
E=[14 0]
n=[1 2]
plot(n,E,'k-','linewidth',4)

Koodia: [Valitse]
clear
E=[14 0]
plot(E,'k-','linewidth',4)