Permalänk
Medlem

Hjälp med matlab

Hej!

Hur kan jag göra den här uppgiften

Kollade upp funktionerna där men förstod inte repmat vad den gjorde. Sen hur kan jag få + och minus framför?

Permalänk
Hedersmedlem

repmat(a, 2, 3) ger ju till exempel

a a a a a a

så om man listar ut vad a är skulle man kunna använda det. Och är det verkligen säkert att man måste ha med '+'; är de inte bara extra tydliga med tecken?

Permalänk
Medlem

Du kan mata in matriser och vektorer i repmat.
Tips är att skriva help repmat och läsa vad som står där.

repmat([1; -1; 1; -1], 1, 4) ger dig det svaret.

Kan ej komma på hur jag skulle göra med reshape utan att göra hela funktionen redundant.

Permalänk
Medlem
Skrivet av Elgot:

repmat(a, 2, 3) ger ju till exempel

a a a a a a

så om man listar ut vad a är skulle man kunna använda det. Och är det verkligen säkert att man måste ha med '+'; är de inte bara extra tydliga med tecken?

Skrivet av Motherofgod:

Du kan mata in matriser och vektorer i repmat.
Tips är att skriva help repmat och läsa vad som står där.

repmat([1; -1; 1; -1], 1, 4) ger dig det svaret.

Kan ej komma på hur jag skulle göra med reshape utan att göra hela funktionen redundant.

Okej då vet jag, trodde +:et skulle vara mer där och därför blev det lite förvirrande. Men då är jag med, första argumentet är vektorn, sen rader, sen kolumner. Men varför skriver du 1, 4 och resultatet blir rätt? Borde det inte vara 4, 4 dvs 4x4? Eftersom det är 4 rader och 4 kolumner.

Permalänk
Hedersmedlem
Skrivet av Motherofgod:

Kan ej komma på hur jag skulle göra med reshape utan att göra hela funktionen redundant.

Om man lyckas generera en vektor [1, -1, 1, ...] skulle man ju kunna möblera om den med reshape. (-1).^(2:13) till exempel.

Skrivet av mhj:

Okej då vet jag, trodde +:et skulle vara mer där och därför blev det lite förvirrande. Men då är jag med, första argumentet är vektorn, sen rader, sen kolumner. Men varför skriver du 1, 4 och resultatet blir rätt? Borde det inte vara 4, 4 dvs 4x4? Eftersom det är 4 rader och 4 kolumner.

Se det som att den placerar ut hela vektorn på 1x4 platser.

Permalänk
Medlem
Skrivet av Elgot:

Om man lyckas generera en vektor [1, -1, 1, ...] skulle man ju kunna möblera om den med reshape. (-1).^(2:13) till exempel.

Se det som att den placerar ut hela vektorn på 1x4 platser.

Vad gör (-1).^(2:13)? Den tar varje element som är -1 och upphöjer det till vadå? Frågar av intresse bara för att lära mig

Men om den placerar ut på 1x4 platser, hur blir det då 16 platser? Känns konstigt när man använder (rader, kolumner) hela tiden annars.

Permalänk
Hedersmedlem
Skrivet av mhj:

Vad gör (-1).^(2:13)? Den tar varje element som är -1 och upphöjer det till vadå? Frågar av intresse bara för att lära mig

2, 3, ..., 13. Så att man får [(-1)^2, (-1)^3, (-1)^4, ...] = [1, -1, 1, -1, ...] alltså. Eller 2*mod(1:12,2)-1

Skrivet av mhj:

Men om den placerar ut på 1x4 platser, hur blir det då 16 platser? Känns konstigt när man använder (rader, kolumner) hela tiden annars.

Se mitt första inlägg också. om a = [1 -1]' blir matrisen där den du söker.

Permalänk
Medlem
Skrivet av Elgot:

2, 3, ..., 13. Så att man får [(-1)^2, (-1)^3, (-1)^4, ...] = [1, -1, 1, -1, ...] alltså. Eller 2*mod(1:12,2)-1

Se mitt första inlägg också. om a = [1 -1]' blir matrisen där den du söker.

Juste det gjorde sådär.

Aa men i ditt första inlägg är det logiskt och så jag tänker: rader, kolumner. 2 rader och 3 kolumner vilket det exakt är. Så känns riktigt skumt att 1, 4 ger 4 rader och 4 kolumner.

Permalänk
Hedersmedlem
Skrivet av mhj:

Juste det gjorde sådär.

Aa men i ditt första inlägg är det logiskt och så jag tänker: rader, kolumner. 2 rader och 3 kolumner vilket det exakt är. Så känns riktigt skumt att 1, 4 ger 4 rader och 4 kolumner.

Experimentera lite med argumenten och se vad som händer. Byt 1 och 4 mot andra nummer, och tänk på vad `;` betyder i det första argumentet du ger `repmat()`.

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk
Medlem
Skrivet av mhj:

Okej då vet jag, trodde +:et skulle vara mer där och därför blev det lite förvirrande. Men då är jag med, första argumentet är vektorn, sen rader, sen kolumner. Men varför skriver du 1, 4 och resultatet blir rätt? Borde det inte vara 4, 4 dvs 4x4? Eftersom det är 4 rader och 4 kolumner.

Den ger 4 rader på grund utav att vektorn är är 4 "rader". Byter du argumentet 1 mot 4 i det jag skrev så kommer du få en matris som är 4*4=16 rader och 4 kolumner. Men allt detta står i help repmat

Permalänk
Hedersmedlem
Skrivet av mhj:

Juste det gjorde sådär.

Aa men i ditt första inlägg är det logiskt och så jag tänker: rader, kolumner. 2 rader och 3 kolumner vilket det exakt är. Så känns riktigt skumt att 1, 4 ger 4 rader och 4 kolumner.

Tänk som sagt att a kan vara något annat. Om a till exempel är [A B C] blir

a a a a a a

A B C A B C A B C A B C A B C A B C

och a = [A B C]' ger

A A A B B B C C C A A A B B B C C C

Permalänk
Medlem
Skrivet av phz:

Experimentera lite med argumenten och se vad som händer. Byt 1 och 4 mot andra nummer, och tänk på vad `;` betyder i det första argumentet du ger `repmat()`.

Skrivet av Motherofgod:

Den ger 4 rader på grund utav att vektorn är är 4 "rader". Byter du argumentet 1 mot 4 i det jag skrev så kommer du få en matris som är 4*4=16 rader och 4 kolumner. Men allt detta står i help repmat

Skrivet av Elgot:

Tänk som sagt att a kan vara något annat. Om a till exempel är [A B C] blir

a a a a a a

A B C A B C A B C A B C A B C A B C

och a = [A B C]' ger

A A A B B B C C C A A A B B B C C C

Okej nu förstår jag vad den gör! Tack!