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)

Categories

Find more on 2-D and 3-D Plots 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!