Side 4 av 5
Lagt inn: 03/11-2011 11:15
av Nebuchadnezzar
Kode: Velg alt
fprintf('/n')
tall = 0;
sum = 0;
b = input('Skriv inn en karakter: ');
if round(b)==b
h=1;
else
h=0;
end
if b > 0 && b<7 && h==1
while b > 0 && b<7 && h==1
sum = sum + b;
tall = tall + 1;
b = input('Skriv inn enda en karakter: ');
if round(b)==b
h=1;
else
h=0;
end
end
fprintf('Gjennomsnittet av karakterene ble %d /n',sum/tall)
else
fprintf('Du skrev ikke inn noen gydlige karakterer \n')
end
Lagt inn: 03/11-2011 19:36
av gill
Kode: Velg alt
function [elements sum]=funcunderN(N)
a=0;
count=0;
i=0;
matrix=[];
while a<=N
i=i+1;
a=a+i^2;
count=count+1;
matrix(i)=a;
end
if a>=N
a=a-i^2;
count=count-1;
matrix=matrix(1:i-1);
end
sum=count;
elements=sum(matrix);
jeg får ikke skrevet elements med denne koden her.
Lagt inn: 03/11-2011 20:48
av ojmik
gill skrev:jeg får ikke skrevet elements med denne koden her.
Når du kjører dårlig kode i matlab så får du en feilmelding. Denne er svært nyttig for å finne ut hvor feilen din er lokalisert. Når du kjører koden du skrev inn overfor får du feilmeldingen:
Kode: Velg alt
>> [a b]=funcunderN(5)
??? Index exceeds matrix dimensions.
Error in ==> funcunderN at 41
elements=sum(matrix);
Programmet gir deg beskjed om en feil på linje 41, og at "Index exceeds matrix dimensions". Grovt oversatt betyr det at elementet du ba om ikke finnes i matrisen.
Nå bør du tenke at dette virker noe merkelig ettersom sum ikke er en matrise men en funksjon. Hvorfor skal matlab tolke funksjonen sum som en matrise?
Hvis du ser like over, på linje 39 finner du at der har du definert sum til å være en variabel. Samtidig har du definert sum som variabel til returnering i linje en.
Siden du i m-fila di har definert sum som en variabel kan ikke matlab lenger bruke sum-funksjonen. Gi nytt navn til variabelen og du bør være i boks.
Lagt inn: 08/11-2011 10:33
av gill
Kode: Velg alt
function isitalike=comparestrings(a,b)
n=length(a);
m=length(b);
c=logical(0);
y=m;
z=n;
f=0;
if m>n
temp=a;
a=b;
b=temp;
end
for i=1:n
c=strcmp(a(i),b(1));
if c
j=1;
if length(a(i:n))>=length(b)
for k=1:length(b)
while a(i)==b(j)
if j==length(b)
if z>y
disp('b is in a')
f=1;
else
disp('a is in b')
f=1;
end
end
j=j+1;
i=i+1;
end
end
end
end
end
koden over får jeg feilmeldingen
Kode: Velg alt
>> b
b =
vg
>> a
a =
detvgdet
>> comparestrings(a,b)
b is in a
??? Attempted to access b(3); index out of bounds because numel(b)=2.
Error in ==> comparestrings at 39
while a(i)==b(j)
>>
men jeg prøver å kutte av sammenligningen med
for k=1:length(b)
etter lengde av b skulle den hoppe over if definert over tenkte jeg. Hvorfor gjør den ikke det?
Lagt inn: 08/11-2011 10:41
av Nebuchadnezzar
% Oppgave 2 a)
% Alternativ I
Kode: Velg alt
function Y = Omvend1( a )
p=length(a);
for i=1:p
g(i)=a(p-i+1);
end
Y=g;
end
% Alternativ II
Kode: Velg alt
function Y = Omvend(a)
Y = fliplr(a);
end
% Oppgave 2 b)
% Alternativ I
Kode: Velg alt
function Y = Snur(a)
b = length(a);
c = 0;
for i=1:b
if a(i)==a(b-i+1)
c = c + 1;
end
end
if c < round(b/2)
Y = 0;
else Y = 1;
end
% Alternativ II
Kode: Velg alt
function Y=Palindrom(a)
b = strrep(a,' ','');
if strcmpi(b,fliplr(b))
Y=1;
else
Y=0;
end
end
% Oppgave 2 c)
Kode: Velg alt
function Y = Finn(b,a)
if strfind(a,b)>0
Y=1;
else
Y=0;
end
end
Lagt inn: 16/11-2011 13:23
av gill
Jeg lurer på hva de mner med første fallgruve her at man ikke kan bruke en vektor med 1 og 0 lagret med double som true false statement
http://bildr.no/view/1027433
Dette skriptet fungerte i hvert fall
Kode: Velg alt
h=[1 0 1];
for i=1:length(h)
if h(i)
disp('yes')
end
end
Lagt inn: 16/11-2011 13:33
av Vektormannen
Er 1 og 0 lagret som double?
Lagt inn: 16/11-2011 13:39
av gill
vektoren h blir lagret som vanlig double?
Kjører if true eller false for h som er double var det jeg tenkte?
Lagt inn: 16/11-2011 13:43
av Vektormannen
Det er vel ikke vektoren, men tallene i den, som lagres som integer, double, osv. Datatypen til tallene avhenger av hvor stor presisjon som trengs. Når du skriver h = [1 0 1] så tviler jeg på at MATLAB lagrer disse heltallene som double (altså desimaltall med høy presisjon.) Prøv heller å skrive h = [1.0 0.0 1.0]. Da går det kanskje ikke.
Lagt inn: 16/11-2011 14:20
av gill
funker med desimaltall og:
http://bildr.no/view/1027446
h blir lagret om double
oopps ingen vits i å ta med variabelen i som ble med i workspace
Lagt inn: 16/11-2011 14:56
av drgz
A = ceil(16*rand(20,1));
idx_log = A>10;
idx_double = double(idx_log);
Kaller du deretter
A(idx_log)
får du listet opp alle elementene i A som er større enn 10. Prøver du å kalle A(idx_double) vil du få feilmeldingen "Subscript indices must either be real positive integers or logicals.", med andre ord en mulig fallgruve hvis du ikke tenker deg om.
Lagt inn: 17/11-2011 15:07
av gill
Jeg lurer på det de sier nederst til venstre i øverste ark til venstre
http://bildr.no/view/1028232
at man kan slette en hel rekke eller kolonne men når jeg gjør det i matlab får jeg:
Kode: Velg alt
>> cellrowvec={1:3, 'hello', 'e', [1:3;4:6];1:3, 'hello', 'e', [1:3;4:6]}
cellrowvec =
[1x3 double] 'hello' 'e' [2x3 double]
[1x3 double] 'hello' 'e' [2x3 double]
>> cellrowvec{1,:}=[ ]
??? The right hand side of this assignment has too few values to satisfy
the left hand side.
>>
Lagt inn: 17/11-2011 17:09
av espen180
Prøv
{...} refererer til innholdet i en gitt celle, mens (...) refererer til selve cellen.
Lagt inn: 18/11-2011 22:45
av gill
http://itgk.idi.ntnu.no/oving/lf/aud2-t ... 6392pl.pdf
lurer på flytskjemaet i oppgave 1e:
jeg tenkte at å sette i=1 og temp=list(1) skulle være et parallellogram og ikke en vanlig firkant siden det var en input og at i=i+1 skulle være firkant mens temp=list(i) skulle være parallellogram men det var det ikke i fasit. Hvordan kan i=1 være en process?
Lagt inn: 22/11-2011 16:02
av gill
jeg lurte på oppgave 2c og spørsmålet
I hvilken dimensjon lagres x-posisjonene dersom
spillbrettet lagres som en to-dimensjonal MATLAB-tabell ?
hva er en todimensjonal MATLAB-tabell?
http://itgk.idi.ntnu.no/eksamen/gamle_e ... Matlab.pdf
fasit
http://itgk.idi.ntnu.no/eksamen/gamle_e ... b%20LF.pdf