How to separate a vector into positive and negative vectors using a for loop?
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
clc;
x = [-3.6 10 3 -1 11.4 0 7 -9.5 2 15 -1 3];
for i = 1:length(x)
if x(i) >= 0
x(i) = P
elseif x(i) < 0
x(i) = N
end
end
This is what I have. It is obviously wrong but you should get the gist of it. It needs to be separated into two vectors: N and P
0 Kommentare
Antworten (2)
Andrei Bobrov
am 31 Mär. 2019
Bearbeitet: Andrei Bobrov
am 31 Mär. 2019
x = [-3.6 10 3 -1 11.4 0 7 -9.5 2 15 -1 3];
y = strings(numel(x),1);
for ii = 1:length(x)
if x(ii) >= 0
y(ii) = "P";
elseif x(ii) < 0
y(ii) = "N";
end
end
or
x = [-3.6 10 3 -1 11.4 0 7 -9.5 2 15 -1 3];
cn = 0;
cp = 0;
nn = numel(x);
p = zeros(nn,1);
n = zeros(nn,1);
for ii = 1:nn
if x(ii) >= 0
cp = cp + 1;
p(cp) = x(ii);
else
cn = cn + 1;
n(cn) = x(ii);
end
end
p = p(1:cp);
n = n(1:cn);
or
p = x(x >= 0);
n = x(x < 0);
Image Analyst
am 31 Mär. 2019
You're not supposed to assign x - that's a given constant. You're supposed to build N and P. So it will be more like
clc;
x = [-3.6 10 3 -1 11.4 0 7 -9.5 2 15 -1 3];
nIndex = 1;
pIndex = 1;
for i = 1:length(x)
if x(i) >= 0
P(pIndex) = x(i);
pIndex = .......
elseif x(i) < 0
N(nIndex) = x(i);
nIndex = .............
end
end
See if you can complete your homework from the above.
8 Kommentare
Image Analyst
am 1 Apr. 2019
I tried it both before I posted, and after your last post, and it works perfectly fine.
The final line to get it to work is
pIndex = pIndex + 1;
Glad you found an alternate way that is 100% your own though - that's probably better as far as turning in graded homework goes.
Siehe auch
Kategorien
Mehr zu Startup and Shutdown finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!