Filter löschen
Filter löschen

Info

Diese Frage ist geschlossen. Öffnen Sie sie erneut, um sie zu bearbeiten oder zu beantworten.

get the output of an if clause in the order

1 Ansicht (letzte 30 Tage)
Homayoon
Homayoon am 13 Aug. 2015
Geschlossen: MATLAB Answer Bot am 20 Aug. 2021
Dear All,
My code is so long and unfortunately cannot copy all of it, but I guess I know what is the problem with the code. I do appreciate anyone's help to solve the problem. Thanks in advance.
I have a zero matrix defined as :
H = zeros (1, 100);
% Basically I defined this zero matrix to export the output into it. If you have any other alternatives which satisfy the needs, I am so welcome.
Here is my if clause which investigates for a desired condition.
if nnz(Rhh) ~= 0
% where Rhh is a matrix of (1,80) and defined in every step k, in other words for each k, there is only one Rhh matrix assigned to that specific k. For most of the k values, Rhh is a zero matrix.
What I simply need to do is write the first 100 k's which have the non-zero Rhh. The k's has to be written in the order into the matrix H. Here is the code I have written for it and I know what is the wrong with the code. However, cannot fix it.
for j=1:100
if (H(1,j)~=0)
continue
else
H(1,j)=k
end
Obviously the code does not work out. As soon as the first k is found, all of the elements of the matrix H will turns to the first value of k. Thus, there will be not zero elements left for other 99 k values.
I hope you kindly help me to figure it out.
All the Best,
HRJ

Antworten (1)

Star Strider
Star Strider am 13 Aug. 2015
I’m not certain that I follow everything in your Question. I also have no idea what ‘k’ is. However, assigning ‘H’ would seem to me to be:
for j=1:100
if (H(1,j)~=0)
continue
else
H(1,j)=k(j);
end
end
There are more efficient ways to do that (using logical indexing), but considering I don’t know everything I would like to about what you’re doing, I would just change the loop to assign the appropriate element of ‘k’ to ‘H’.
  4 Kommentare
Homayoon
Homayoon am 13 Aug. 2015
Dear Star,
I do appreciate your patience on this question, however, your answer , with respect, does not address my question.
I have a for loop with k as the identifier. for each value of k, a unique matrix of Rhh is obtained. if nnz(Rhh)==0, we do not need to do anything. But if nnz(Rhh)~=0, i need to have the k as the output. Now imagine only 5 values of k among 1:100000 have a non-zero Rhh matrix. Let's say K= 100, 5000, 6000, 7666 and 99999. I need the matrix H to be in the following format and contains of all of these k values i.e.
H = [100, 5000, 6000, 7666, 99999]
Star Strider
Star Strider am 13 Aug. 2015
I’m lost. I’m obviously not understanding what you want and am not providing you an answer you want.
I’ll delete my Answer in a few minutes.

Diese Frage ist geschlossen.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by