5 svar
108 visningar
Meden är nöjd med hjälpen
Meden 19
Postad: 2 dec 2020 23:51

Skapa vektorer

Hej! Min uppgift är att dela upp en vektor V som är lagrad i 'tal'. om ett element är större än 10 ska det lagras i v_stor, om det är mindre än -10 ska det lagras i v_liten och när det är mellan 10 och -10 ska det lagras i v_mellan. Min kod lägger dock alla element i v_mellan, även element mindre än -10 och större än 10. 

 

Min kod:

load('tal')


v_stor = 0;
v_mellan = 0;
v_liten = 0;

 
for ii = 1:size(V)
if V(1:size(V))>10
v_stor = [v_stor V(ii)]
elseif V(1:size(V))<-10
v_liten = [v_liten V(ii)]
else
v_mellan = [v_mellan V(ii)]
end

 
end

 

Min fråga är alltså vad det är som går fel.

Tacksam för svar.

Albiki 5096 – Fd. Medlem
Postad: 3 dec 2020 00:06

Hej,

Om vektorn V har 1 rad och 23 kolumner så ger size(V) resultatet [1 23]. Hur ska direktivet 1:size(V) i snurrorna uppfattas då?

Jag tror att det du avser är att direktivet ska vara 1:23 och det kan du uppnå med 1:length(V) istället.

Meden 19
Postad: 3 dec 2020 00:11

Hej,

Jag testade det och fick svaret "Undefined function 'legnth' for input arguments of type 'double'.". 

Jag har även testat att använda ett stängt antal element (1:10) för att se hur den reagerade och den la då fortfarande alla elementen i v_mellan

Albiki 5096 – Fd. Medlem
Postad: 3 dec 2020 00:15

Ja, det tror jag också att legnth är en odefinierad funktion; nu skrev jag inte legnth utan length.

Meden 19
Postad: 3 dec 2020 00:18

Oj förlåt, tack så mycket

Dock ger den fortfarande bara v_mellan

Meden 19
Postad: 3 dec 2020 11:58

Jag lyckades lösa det nu, men tack för hjälpen

Svara Avbryt
Close