Just nu i M3-nätverket
Gå till innehåll

Är min Matlab-kod korrekt?


Re-JeeP

Rekommendera Poster

Hej!

 

Jag har en Matlab fråga.

 

Är denna koden korrekt? Den ska skapa en vektor y och sätta värden på varje position (1/x^2). x ska gå från 1 till n men 1 som intervall.

 

Den tar nämnligen så grymt lång tid. 10 000 funkar men 100 000 är kört.

Men det kanske ska ta lång tid? Jag vet att den inte är optimal, men det är inte det som är tanken.

 

function s2=test(n)
for x=1:n
y(x)=1/(x^2);
end
s2=sum(y);

 

Mvh // Johan

 

[inlägget ändrat 2007-01-24 13:16:17 av Re-JeeP]

Länk till kommentar
Dela på andra webbplatser

Din kod skapar mycket riktigt en vektor y med dina kriterier. Varför du summerar elementen i vektorn efteråt vet jag dock inte men jag antar att det var ett krav du inte skrev ner.

 

Som du själv skrev så är inte koden optimal eftersom du tvingar Matlab att göra samma sak n gånger. Ett tips är att använda dig av Matlabs inbyggda matrishantering så löser du problemet utan looop:

 

x=[1:n]; %Skapar vektorn x med elementen 1 till n och avståndet 1
y=1./(x.^2); %Punkterna gör att operationen sker för varje element.

 

Så kan du lägga till summeringen också om du så önskar så som du gjorde innan.

 

Länk till kommentar
Dela på andra webbplatser

Jag hade gjort din lösning också...

 

Tanken var att kolla om det var mycket skillnad på tiden (vilket det verkligen var).

 

Men jag tyckte det tog lite väl lång tid för for loopen...

 

Tack!

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...