Error when manipulating values on a matrix
1 view (last 30 days)
Show older comments
Hello there,
I've got a few problems with my code. I'm going to explain: I have a matrix that is randomly generated: Populacao1 = [((randi([-1 1], n_individuos, n_centrais*int_tempo)))];
n_individuos=10 (or another number) n_centrais=2 (or more) and int_tempo = 10 (or more)
Populacao1 has only 1, -1 and 0 values. Now the problem begins.
I want to be able to keep 4 matrix (caulda_turbinado_c1, caudal_bombado_c1 and caulda_turbinado_c2, caudal_bombado_c2)
caudal_turbinado_c1 is the first (n_centrais*int_tempo)/2 where the the value equals 1 and caudal_bombado_c2 is when it equals -1. caudal_turbinado_c2 and bombado_c2 are the same in the other half of the matrix. the problem is that it doesn't work. Don't know why :s
for i=1:n_individuos
for j=1:int_tempo*n_centrais
if j <= int_tempo
if(Populacao1(i,j)==1)
caudal_turbinado_c1(i,j) = 100;
if(Populacao1(i,j)==-1)
caudal_bombado_c1(i,j)=200;
end
end
end
if j > int_tempo && j<=int_tempo*n_centrais
if(Populacao1(i,j)==1)
caudal_turbinado_c2(i,j-int_tempo) = 400;
if(Populacao1(i,j)==-1)
caudal_bombado_c2(i,j-int_tempo)=200;
end
end
end
end
end
Thanks in advance
4 Comments
Accepted Answer
per isakson
on 4 Jan 2013
Edited: per isakson
on 4 Jan 2013
The statement
caudal_bombado_c1(ii,jj)=200;
in
if (Populacao1(ii,jj)==1)
caudal_turbinado_c1(ii,jj) = 100;
if(Populacao1(ii,jj)==-1)
caudal_bombado_c1(ii,jj)=200;
end
end
will never be executed, since
Populacao1(ii,jj)
cannot be identical to +1 and -1 at the same time.
.
Modified code - I'm just guessing
You should do some exercises with the debugging features in Matlab. Put some break-points in the code and run
>> [ ctc1, cbc1, ctc2, cbc2 ] = cssm();
where
function [ ctc1, cbc1, ctc2, cbc2 ] = cssm()
n_individuos = 10;
int_tempo = 6;
n_centrais = 2;
Populacao1 = randi( [ -1, 1 ], n_individuos, int_tempo * n_centrais );
[ ctc1, cbc1, ctc2, cbc2 ] ...
= cssm_( n_individuos, int_tempo, n_centrais, Populacao1 );
end
function varargout = cssm_( n_individuos, int_tempo, n_centrais, Populacao1 )
caudal_turbinado_c1 = nan( n_individuos, int_tempo*n_centrais );
caudal_bombado_c1 = nan( n_individuos, int_tempo*n_centrais );
caudal_turbinado_c2 = nan( n_individuos, int_tempo*n_centrais );
caudal_bombado_c2 = nan( n_individuos, int_tempo*n_centrais );
for ii=1:n_individuos
for jj=1:int_tempo*n_centrais
if jj <= int_tempo
if (Populacao1(ii,jj)==1)
caudal_turbinado_c1(ii,jj) = 100;
elseif(Populacao1(ii,jj)==-1)
caudal_bombado_c1(ii,jj)=200;
else
% do nothing
end
end
if jj > int_tempo && jj<= int_tempo * n_centrais
if(Populacao1(ii,jj)==1)
caudal_turbinado_c2(ii,jj-int_tempo) = 400;
elseif(Populacao1(ii,jj)==-1)
caudal_bombado_c2(ii,jj-int_tempo)=200;
else
% do nothing
end
end
end
end
varargout = { caudal_turbinado_c1, caudal_bombado_c1 ...
, caudal_turbinado_c2, caudal_bombado_c2 };
end
0 Comments
More Answers (0)
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!