Sum specific values from a matrix
이전 댓글 표시
hello
I have a matrix existing of 2 colums and a variable number of rows. the first colum is "amplitude" the second colum is "frequency". for some frequencys in a specific range i want to change the amplitude. so for example: for frequencys from 5 to 8 the amplitude has to be multiplied by 2. for frequencys from 9 to 14 the amplitude needs to be multiplied by 4 and so on. for that i used if loops in a for loop as seen in the code below. now for each range of frequency i want the amplitudes to be added. so for frequencys 4 to 8, all the amplitudes needs to be multiplied by 2 and then al these amplitudes need to be added to each other and saved in a new variable. can someone help me to solve my problem.
thanks in advance
treshold1 = 0.0001; % treshold amplitude
treshold2 = 0; %treshold freq
%K(K(:,1)<treshold1,:)=[0];
K(K(:,2)<treshold2,:)=[0];
for i = 1:size(K,1)
if K(i,2) >=5 && K(i,2)<9
K(i,1)*2
%K1 = sum of the amplitude for freq 5 to 8
if K(i,2) >=9 && K(i,2)<15
K(i,1)*4
%K2 = sum of the amplitude for freq 9 to 14
end
end
채택된 답변
추가 답변 (1개)
Athul Prakash
2020년 2월 23일
편집: Athul Prakash
2020년 2월 23일
You may use logical indexing as follows:
cond1 = K(:,2)>=5 & K(:,2)<9; %these are logical indices to select out your given ranges.
cond2 = K(:,2)>=5 & K(:,2)<9;
K(cond1,:) = K(cond1,:)*2;
K(cond2,:) = K(cond2,:)*4;
I'm not sure what you wish to do after this.
Hope it Helps!
댓글 수: 3
Guillaume
2020년 2월 24일
Hi Athul
So lets say that this is the matrix. the second column are the values of frequencys and the first column are the corresponding values of amplitude for each frequency. What im trying to do is to add all the amplitudes off column 1 for a specific frequency range. lets say for frequency range 1 to 24(red marker). considering that the number of elements for each frequency range can vary for a differint matrix: The values from column 1 coresponding with the frequency range need to be added up. so 4.9537e-17 + 9.7318e-17 + 0.2500 + 9.7632e-17 + ...... Im trying to figure out how to do this but i dont know how.
Thanks in advance.

Athul Prakash
2020년 2월 25일
For a closed interval [fMin fMax],
% suppose the matrix above is called 'M'
logical_indices = ( (M(:,2) >= fMin) & (M(:,2) <= fMax) );
amps_in_range = M(logical_indices, 1);
result = sum(amps_in_range);
You may compute a similar sum for all frequency bands.
Hope it Helps!
Sören Gevaert
2020년 2월 25일
카테고리
도움말 센터 및 File Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!