Till en början så har jag ett ord eller mening. Typ 'EXEMPEL'. Jag vill hitta dubbletter av bokstäver och radera dom. Till slut är det tänkt att jag ska lyckas göra en matris med ordet/meningen och komplettera med resterande bokstäver i alfabetet, dock är det viktigt att inga dubbletter får finnas i matrisen.
A = ['EXEMPEL'];
for i = 2 : lenght(A)
for k = 1 : length(A-1)
if A(k) ==A(i)
A(i) = []
end
end
end
Undefined function or variable 'lenght'
Så hade jag tänkt ungefär på första problemet. Men det funkar ej. Vad gör jag för fel?
Och nu när jag kan titta på koden ordentligt så ser jag lite andra problem med.
length(A-1) -operationen gör inte vad du tror att den gör. Testa att köra den från kommandoraden efter att ha definierat ett A så ser du vad problemet är.
Sedan skapar du dig ett problem när du skriver över A(i)=[] eftersom det minskar storleken på din vektor i varje steg, så förr eller senare hamnar du utanför vektorns längd med dina index.
http://i.imgur.com/vCUxJuT.png
Behöver hjälp med denna uppgift. Är total nybörjare när det kommer till matlab.
Fråga 1 angående förarbete så kan man åtminstone börja med att plotta upp en graf antar jag.
Men får inte matlab att göra det när jag använder koden: clear variables
close all
clc
x = 0:0.1:5;
y = ((1-exp(-x.^2))/(3*x.^2));
plot(x,y)
Resultatet blir endast en vit ruta.
Wolfs graf: http://www.wolframalpha.com/input/?i=%281-e^%28-x^2%29%29%2F%283x^2%29
Hur skriver man förövrigt oändligheten i matlab?
Nån som har tips för vilken typ av förbehandling som krävs?
Om en förbehandling som krävs är uppdelning i flera delar har jag liksom ingen aning om hur man gör det i matlab kod
__________________
Senast redigerad av Quicksandt 2016-03-03 kl. 17:56.
Nån som har tips för vilken typ av förbehandling som krävs?
Om en förbehandling som krävs är uppdelning i flera delar har jag liksom ingen aning om hur man gör det i matlab kod
y(0)= 1/3 som du kan få ut genom att köra hospitals regel, Matlab klarar inte av att räkna den biten.
Sen vet du att integralen < integralen av 1/3*x^2 med samma intervall. Du kan sedan välja ett tillräckligt stort X för att bortklippningen ska bli så liten som möjlig.
Du stavar fel, i rad 1 och 2 skriver du length olika.
Det du vill göra i steg 1 finns redan inbyggt som funktion i matlab, om det är ok med en sorterad lista i bokstavsordning. Ta en titt på kommandot unique()
Om det är en uppgift att skriva din egen lösning på det så är det naturligvis inte intressant med matlabs egna funktion, men om du bara vill ha unika element som ett delsteg i något annat och det inte finns krav på hur du skall göra det så är det enklare att ta genvägen via det som redan finns
Tack du, ska kika på det. Jag har inga direktiv annat än att lösa uppgiften på enklaste sätt, så jag uppskattar verkligen sådana användbara tips.
y(0)= 1/3 som du kan få ut genom att köra hospitals regel, Matlab klarar inte av att räkna den biten.
Sen vet du att integralen < integralen av 1/3*x^2 med samma intervall. Du kan sedan välja ett tillräckligt stort X för att bortklippningen ska bli så liten som möjlig.
Och hur väljer jag det X? varför just mindre än 1/3*x^2?
Förstår verkligen inte hur svanskapningen sker.
__________________
Senast redigerad av Quicksandt 2016-03-03 kl. 23:24.
Har kommit en liten bit på vägen men skulle behöva lite hjälp med en sak.
Jag har letat på nätet och försökt läsa under help i matlab men finner inget riktigt svar.
Första frågan: jag vill först dela upp ett text/ord i par om två st element.
t = 'soffa' % vill dela upp
u = 'so ff a' % så att texten blir såhär.
Andra frågan: Nu får dessa par inte innehålla samma bokstav, och om de gör det så ska x dela paret.
Och om texten innehåller udda antal bokstäver efter jag adderat möjliga x så vill jag lägga till ett x i slutet av texten:
u = 'so ff a' % Vill lägga till ett x mellan andra paret.
v = 'so fx fa'
__________________
Senast redigerad av bigkjell85 2016-03-04 kl. 13:09.
Har kommit en liten bit på vägen men skulle behöva lite hjälp med en sak.
Jag har letat på nätet och försökt läsa under help i matlab men finner inget riktigt svar.
Första frågan: jag vill först dela upp ett text/ord i par om två st element.
t = 'soffa' % vill dela upp
u = 'so ff a' % så att texten blir såhär.
Andra frågan: Nu får dessa par inte innehålla samma bokstav, och om de gör det så ska x dela paret.
Och om texten innehåller udda antal bokstäver efter jag adderat möjliga x så vill jag lägga till ett x i slutet av texten:
u = 'so ff a' % Vill lägga till ett x mellan andra paret.
v = 'so fx fa'
Tolkar jag dig rätt vill du inte ha dubletter i din kod utan i så fall skifta den ett steg framåt genom att sätta in ett x.
Ditt exempel med soffa delas ju mitt i ff. Hur ser du på fall där den dubbla sekvensen kommer så att den ändå delas på mitten?
Som i stoppa som med det du beskriver skulle delas i
'st op pa'
Är det ett problem och kan det vara ett problem om vi inte vet hur många instanser av extrainsatta x vi kommer att få framför just den här dubbelteckningen om ordet ingår i en mening?
Det enklaste skulle nog vara att välja att ersätta alla dubbelteckningar enligt mönstret
aa med axa innan du delar strängen även om det ger strängbitar som börjar med x och inte bara avslutas med x.
Den sortens find and replace ser ut som något som lämpligen görs med regular expressions. https://en.wikipedia.org/wiki/Regular_expression
Jag är lite dåligt insatt i om matlab kommer med en toolbox för vettig hantering av regexp som default, men det fins garanterat plugins som gör det om det inte finns som standard.
Funderar också över ditt val av x som utfyllnad. Kan det vara problematiskt att du vill använda x om det matas in ord som innehåller x i sig till funktionen? Finns det något annat tecken som är lämpligare.
Ofta hjälper det att fundera över perverterade fall för att upptäcka fallgropar när man kodar. Att helt enkelt fråga sig själv "Vad skulle kunna skickas som indata för att orsaka problem med den logik jag har tänkt använda för att lösa problemet?"
För övrigt är jag nyfiken på vilket huvudproblem du försöker lösa genom dessa delsteg och vilken form av indata som funktionen kommer att få.
Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!
Stöd Flashback
Swish: 123 536 99 96Bankgiro: 211-4106
Stöd Flashback
Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!