I'm having trouble plotting with subplot. I've been trying to plot multiple graphs since the variables I'm plotting have multiple outputs but I tried using the comand - subplot(3,2,i5) since im trying to plot 3 rows in two coloums by pulling my info form a for loop. It's giving me a graph but it's also giving me an error "Index exeeds number of subplots". What should I do?
(to solve a little bit of confusion, I'm trying to plot the noise factors + the sine wave to get different snr noise levels)
This is my code:
clear;
clc;
load('ver.mat')
Time_5=0:0.01:5;
f=3;
x_5= sin(2*pi*f*Time_5*6);
Max_diff=length(Time_5);
disp(Max_diff); % length of time vector
501
plot(Time_5,x_5);
title('Signal vs. Time Vector');
ylabel('Signal');
xlabel('Time');
N_fact=0.2:0.6:4; % noise vector
for i5=1:length(N_fact)
noise=rand(size(Time_5))-0.5;
noise_sig= x_5+noise*N_fact(i5);
% for SNR:
sig_pwr=sum(x.^2)/length(x);
noise_pwr=sum((noise_sig-x).^2)/length(x);
snr=10*log10(sig_pwr/noise_pwr);
subplot(3,2,i5);
plot(Time_5,noise_sig);
xlabel('Time in s');
ylabel('Signal');
title(sprintf('SNR=%.2f dB',snr));
end
Unrecognized function or variable 'x'.

2 件のコメント

Gabriela
Gabriela 2023 年 9 月 15 日
I forgot to add something. I changed the line
snr=10*log10(sig_pwr/noise_pwr);
for:
snr=snr(x,noise_sig);
I think this one works better...? If not please let me know and thank you for the help!
Torsten
Torsten 2023 年 9 月 15 日
Next error follows.
Please test your code next time by using the green RUN arrow.

サインインしてコメントする。

 採用された回答

Star Strider
Star Strider 2023 年 9 月 15 日

0 投票

You are plotting seven subplots so you need to make room for them.
Try this —
clear;
clc;
load('ver.mat')
Time_5=0:0.01:5;
f=3;
x= sin(2*pi*f*Time_5*6);
Max_diff=length(Time_5);
disp(Max_diff); % length of time vector
501
plot(Time_5,x);
title('Signal vs. Time Vector');
ylabel('Signal');
xlabel('Time');
N_fact=0.2:0.6:4; % noise vector
for i5=1:length(N_fact)
noise=rand(size(Time_5))-0.5;
noise_sig= x+noise*N_fact(i5);
% for SNR:
sig_pwr=sum(x.^2)/length(x);
noise_pwr=sum((noise_sig-x).^2)/length(x);
snr=10*log10(sig_pwr/noise_pwr);
subplot(2,4,i5);
plot(Time_5,noise_sig);
xlabel('Time in s');
ylabel('Signal');
title(sprintf('SNR=%.2f dB',snr));
end
.

その他の回答 (1 件)

Image Analyst
Image Analyst 2023 年 9 月 15 日

0 投票

N_fact=0.2:0.6:4
N_fact = 1×7
0.2000 0.8000 1.4000 2.0000 2.6000 3.2000 3.8000
numel(N_fact)
ans = 7
You can see that you need at least 7 plots but with "3,2" you're setting up a layout of only 6 plot slots. To fix, use 3,3 in subplot, not 3,2
subplot(3, 3, i5)

カテゴリ

ヘルプ センター および File Exchange2-D and 3-D Plots についてさらに検索

質問済み:

2023 年 9 月 15 日

回答済み:

2023 年 9 月 15 日

Community Treasure Hunt

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

Start Hunting!

Translated by