Page 2 of 5

Posted: 18/10-2011 12:53
by drgz
1) c = a | b gir c(i) = 1 der a(i) eller b(i) = 1, og c(i) = 0 der a(i) og b(i) = 0
2) c = a & b gir c(i) = 1 der a(i) = 1 og b(i) = 1, og c(i) = 0 der a(i) eller b(i) = 0.
3) c = a==b gir c(i) = 1 der a(i) = b(i) og 0 der a(i) != b(i)

For ikke-binære sekvenser så skilles det på elementer lik null og elementer ulik null i 1) og 2). Dvs hvis a = [1 3 2] og b = [0 3 1] så vil c = a & b = [0 1 1], mens c = a | b = [1 1 1]. 3) gjelder uansett verdier da man gjør en direkte sammenligning mellom elementene.

Og samme greia for matriser. Elementvis sammenligning.

Ellers må jeg si at du burde øve deg på å uttrykke deg tydeligere, for det er ikke innlysende hva du vil fram til (og sånt blir du straffet for senere i studiet når du skal skrive rapporter osv).

Posted: 19/10-2011 09:45
by gill
Skal prøve å formulere meg:) Takk for tilbekemelding!

Jeg har et problem med å få en funksjon vist i boka til å fungere i matlab. Funksjonen printem vist her:

http://bildr.no/view/1004261

Her er mitt forsøk:

http://bildr.no/view/1004263

Her er function printem sin tekst:

function printem(a,b)

fprintf('the first number is %.lf and the second is %.lf\n',a,b)
end

Posted: 19/10-2011 10:23
by espen180
Du har visst lest feil og skrevet %.lf der det skal stå %.1f.

%.nf der n er et natulig tall viser et tall rundet til n desimaler.

Posted: 19/10-2011 19:10
by gill
Takk!

http://bildr.no/view/1004608

Jeg lurer på hvorfor de har gått fra double til int32 i subfunction i øverste del her som heter askforn. Jeg har prøvd uten og det fungerer helt fint i tilegg har int32 lavere begrensing for høyeste tall enn double.

Dette fungerte og helt fint:

function outn=askforn

inputnum=input('Enter a positive integer for n ')

while inputnum<0

inputnum=input('Invalid! Enter a positive integer ')

end

outn=inputnum

end

Posted: 19/10-2011 19:47
by drgz
Tror du har glemt å legge til link. ;)

Posted: 19/10-2011 19:51
by gill
oj der kom den ja. Beklager så mye har lagt den til nå i hvert fall

Posted: 19/10-2011 20:38
by drgz
De bruker int32() for å sjekke om tallet du skriver inn er et heltall eller ei. Ved å bruke double så kan du skrive inn flyttall, og det er ikke det de ber om. Men en double datatype kan jo også være et heltall, og det sjekker de ved å konvertere tallet til til int32 og sjekke om tallene er like.

Hvis du ikke vil konvertere til int32 (eller andre heltallstyper) så kan du sikkert sjekke om mod(n,1) er lik null eller ikke. Hvis mod(n,1) er lik null så er n et heltall, hvis ikke så er det ikke det.

Posted: 20/10-2011 09:08
by gill
Jeg lurer på hva de mener med det de har skrevet nedenfor nederst i 6.4
http://bildr.no/view/1005050

altså: Running this function does not add any variables to the base workspace, as demonstrated in the following:

>>clear
>>who
>>disp(mysum([5 9 1]))
15
>>who
>>

Når jeg bruker disp får jeg heller ingen ting i workspace i matlab lagret:
http://bildr.no/view/1005048

Men når jeg kjører funksjonen får jeg ans lagret som variabel:
http://bildr.no/view/1005049

Og da har jo noe blitt lagret i base workspace eller? Jeg vet at disp ikke lagrer noe ans (det står i boka og) men her sier de at de skal kjøre funksjonen og jeg tolker ikke det som at de sier at man må bruke disp her

Videre sier de at for script blir variabler de bruker i scriptet lagret i workspace:

http://bildr.no/view/1005057

Så jeg ser det er forskjell på hva som blir lagret med å kjøre script mot å kjøre funksjon som bare lagrer ans. Er det kanskje det som er hele poenget?

Posted: 21/10-2011 15:57
by gill
http://bildr.no/view/1005978

Jeg lurer på hvordan de kaller bar-grafen med eval nederst i link over. Jeg får det bare til slik:

http://bildr.no/view/1005980

Posted: 21/10-2011 18:39
by espen180
De viser en situasjon er du i prinsippet ikke kan vite hva slags plott som brukeren vil be om. Ved å la brukeren skrive det inn og legge det til en streng, kan du velge riktig plott med eval. Alternativet er å lage en lang if-løkke det du tar høyde for alle (sannsynlige) muligheter.

eval('str') er en kommando som evaluerer strenger MATLAB-kommandoer. Det er derfor mulig å generere dynamiske kommandoer ved å lage og lime sammen strenger.

Generellt er det derimot så godt som aldri lurt å bruke eval. Så godt som alle situasjoner der eval kan brukes, kan du gjøre det bedre og raskere på en annen måte.

Posted: 22/10-2011 09:50
by gill
ja skulle gjerne holdt meg unna eval men siden den er en del av pensum kan man vel ikke utelukke at den dukker opp på eksamen heller selv om det ser ut som jeg bør håpe på det!

http://bildr.no/view/1005974

http://bildr.no/view/1005975

her i quick question lager de en eval(['sin('angle')']) (øverst i andre del av quick question)

som jeg ikke får til å fungere en gang. Her er mine forsøk:

http://bildr.no/view/1006555

Posted: 22/10-2011 11:50
by espen180
sin funksjonen kan ikke ta strenger som input. Du må gjøre dn om til double type ved å bruke str2num.

Posted: 22/10-2011 19:59
by gill
http://bildr.no/view/1007012


Jeg har prøvd å lage denne funksjonen selv men jeg får et problem med en av verdiene:

Her er funksjonen:
inputfield=input('Which field would you like to see: ','s')

if isfield(package, inputfield)

fprintf('The value of the %s field is: %c\n',inputfield,...
eval(['package.' inputfield]))

else
fprintf('Error: %s is not valid field\n', inputfield)

end

jeg prøvde å kalle den i matlab og definerte først strukturen:

>> package=struct('item_no',123,'cost',19.99,'price',39.95,'code','g')
package =
item_no: 123
cost: 19.9900
price: 39.9500
code: 'g'
>> structurevalue
Which field would you like to see: cost
inputfield =
cost
The value of the cost field is: 1.999000e+001
>> structurevalue
Which field would you like to see: item_no
inputfield =
item_no
The value of the item_no field is: {

hvorfor ble den siste verdien {?

Posted: 23/10-2011 01:14
by ojmik
gill wrote: ...

fprintf('The value of the %s field is: %c\n',inputfield,...
eval(['package.' inputfield]))

...

The value of the item_no field is: {

hvorfor ble den siste verdien {?
%c forteller fprintf funksjonen å hvis mulig tolke verdien som en char. 123 i ascii-tabellen er '{'.

Posted: 23/10-2011 11:51
by gill
Jeg skulle prøve å lage en datafil i matlab som besto av tall og bokstaver. Jeg prøvde slik:

>> wordandnumbers=[5.3 'a'; 2.2 'b'; 3.3 'a'; 4.4 'a'; 1.1 'b']

wordandnumbers =

a
b
a
a
b

>>


grunnen til at jeg ville lage en var at de i matlabboka definerte en fil som besto av både tall og bokstaver som heter type subjexp.dat:

http://bildr.no/view/1007434

Hvordan fikk de laget den?