Storing values from a for loop and plot

I need to store the data generated for "Signal" and "Noise" and plot "Signal_to_Noise_Fl" vs. "Signal" for all the iterations. (Ndet and NZ are coming from some random numbers generated from randn function)
I keep getting blank plots when I plot either inside or outside the loop. Any suggestion?
for i=1:Ndet %(Signal)
b = 1:NZ; %(Noise)
Signal_to_Noise_Fl=i./b
end

2 Comments

You need to add the code where you're trying to plot the values.
for i=1:Ndet %(Signal)
for b = 1:NZ %(Noise)
Signal_to_Noise_Fl=i./b;
plot(Signal_to_Noise_Fl)
end
end
this is what I did and it gives a blank plot

Sign in to comment.

 Accepted Answer

Plot with a marker, and use the hold function:
Ndet = 10;
NZ = 10;
hold all
for i=1:Ndet %(Signal)
for b = 1:NZ %(Noise)
Signal_to_Noise_Fl=i./b;
plot(Signal_to_Noise_Fl, 'pg')
end
end
hold off

8 Comments

Thank you! I think it is working. Do you think it is reasonable to use it for following code?
N = 10000;
E = 10000;
C = 10*10^-6;
Q = 0.6;
f = 1/100;
l = 1;
Counting_Noise = 100;
Ncount=N+randn(N,1)*100;
Ndet = 2.303*Ncount*Q*E*C*l*0.01;
NZ=Counting_Noise+randn(Counting_Noise,1)*20;
hold all
for i=1:Ndet %(Signal)
for b = 1:NZ %(Noise)
Signal_to_Noise_Fl=i./b;
plot(i, Signal_to_Noise_Fl,'pg')
end
end
hold off
I have expanded the code a littlebit to create two separate graphs. Again it gives me empty graphs or graphs with one data point.
subplot(2,1,1);
plot(i, Signal_to_Noise_Fl, 'pg');
xlabel('Signal');
ylabel('SNR');
subplot(2,1,2);
plot(b, Signal_to_Noise_Fl, 'pg');
xlabel('Noise');
ylabel('SNR');
end
end
hold off
As always, my pleasure!
I do, although I am not certain what you want to do.
Here is another option:
N = 10000;
E = 10000;
C = 10*10^-6;
Q = 0.6;
f = 1/100;
l = 1;
Counting_Noise = 100;
Ncount=N+randn(N,1)*100;
Ndet = 2.303*Ncount*Q*E*C*l*0.01;
NZ=Counting_Noise+randn(Counting_Noise,1)*20;
for i=1:numel(Ndet) %(Signal)
for b = 1:numel(NZ) %(Noise)
Signal_to_Noise_Fl(i,b)=Ndet(i)./NZ(b);
end
end
figure
plot(Signal_to_Noise_Fl','-g')
Experiment to get the result that you want.
What I am looking for is to plot
1)Signal_to_Noise_Fl vs. Signal
2)Signal_to_Noise_Fl vs. Noise
in two separate graphs.
The code you have suggested generates a graph for 100 different iterations of Signal_to_Noise_Fl calculation I guess. Isn't it? Sorry, I am a begginer and I probably might be asking ignorant questions.
Try this:
N = 10000;
E = 10000;
C = 10*10^-6;
Q = 0.6;
f = 1/100;
l = 1;
Counting_Noise = 100;
Ncount=N+randn(N,1)*100;
Ndet = 2.303*Ncount*Q*E*C*l*0.01;
NZ=Counting_Noise+randn(Counting_Noise,1)*20;
for i=1:numel(Ndet) %(Signal)
for b = 1:numel(NZ) %(Noise)
Signal_to_Noise_Fl(i,b)=Ndet(i)./NZ(b);
end
end
figure
subplot(2,1,1)
plot(Ndet, Signal_to_Noise_Fl', '.g')
xlabel('Signal')
ylabel('Signal-to-Noise')
title('Signal-to-Noise vs. Signal')
subplot(2,1,2)
plot(NZ, Signal_to_Noise_Fl, '.g')
xlabel('Noise')
ylabel('Signal-to-Noise')
title('Signal-to-Noise vs. Noise')
It gives me this error
"Error using plot
Vectors must be the same length."
It worked for me.
‘Signal_to_Noise’ is a (10000 x 100) double array, ‘Ndet’ (that you describe as ‘Signal’) is a (10000 x 1) double array, and ‘NZ’ (that you describe as ‘Noise’) is a (100 x 1) double array. They should all plot correctly as in my code, and they did for me (in R2018b).
I have no idea what the problem is.
The data I plotted with the code I posted:
I am using version 2016. May be because of that. I will give it a try again.
Thank you.
If possible please help me for my other questions.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!