How to combine multiple plots using subplot

17 views (last 30 days)
I'm new to matlab and am having showing all 16 graphs only a few to be showing up. The current code is:
clear
clc
N = 256;
n = 0:N-1;
x0000 = [ones(16,1); zeros(240,1)];
x0000 = x0000/norm(x0000);
x0001 = [zeros(16,1); ones(16,1); zeros(224,1)];
norm(x0001);
x0001 = x0001/norm(x0001);
x0010 = [zeros(32,1); ones(16,1); zeros(208,1)];
norm(x0010);
x0010 = x0010/norm(x0010);
x0011 = [zeros(48,1);ones(16,1); zeros(192,1)];
norm(x0011);
x0011 = x0011/norm(x0011);
x0100 = [zeros(64,1);ones(16,1); zeros(176,1)];
norm(x0100);
x0100 = x0100/norm(x0100);
x0101 = [zeros(80,1); ones(16,1); zeros(160,1)];
norm(x0101);
x0101 = x0101/norm(x0101);
x0110 = [zeros(96,1); ones(16,1); zeros(144,1)];
norm(x0110);
x0110 = x0110/norm(x0110);
x0111 = [zeros(112,1); ones(16,1); zeros(128,1)];
norm(x0111);
x0111 = x0111/norm(x0111);
x1000 = [zeros(128,1); ones(16,1); zeros(112,1)];
norm(x1000);
x1000 = x1000/norm(x1000);
x1001 = [zeros(144,1); ones(16,1); zeros(96,1)];
norm(x1001);
x1001 = x1001/norm(x1001);
x1010 = [zeros(160,1); ones(16,1); zeros(80,1)];
norm(x1010);
x1010 = x1010/norm(x1010);
x1011 = [zeros(176,1); ones(16,1); zeros(64,1)];
norm(x1011);
x1011 = x1011/norm(x1011);
x1100 = [zeros(192,1); ones(16,1); zeros(48,1)];
norm(x1100);
x1100 = x1100/norm(x1100);
x1101 = [zeros(208,1); ones(16,1); zeros(32,1)];
norm(x1101);
x1101 = x1101/norm(x1101);
x1110 = [zeros(224,1); ones(16,1); zeros(16,1)];
norm(x1110);
x1110 = x1110/norm(x1110);
x1111 = [zeros(240,1); ones(16,1)];
norm(x1111);
x1111 = x1111/norm(x1111);
signals=[x0000,x0001,x0010,x0011,x0100,x0101,x0110,x0111,x1000,x1001,x1010,x1011,x1100,x1101,x1110,x1111];
subplot(911);
stem(n,x0000, 'b','Marker','none','LineWidth',1)
title('Signal x0000 - Transmit to send a digital 0000','fontSize',18)
subplot(912);
stem(n,x0001, 'r','Marker','none','LineWidth',1)
title('Signal x0001 - Transmit to send a digital 0001','fontSize',18)
subplot(913);
stem(n,x0010, 'r','Marker','none','LineWidth',1)
title('Signal x0010 - Transmit to send a digital 0010','fontSize',18)
subplot(914);
stem(n,x0011, 'r','Marker','none','LineWidth',1)
title('Signal x11 - Transmit to send a digital 0011','fontSize',18)
subplot(915);
stem(n,x0100, 'r','Marker','none','LineWidth',1)
title('Signal x11 - Transmit to send a digital 0100','fontSize',18)
subplot(916);
stem(n,x0101, 'r','Marker','none','LineWidth',1)
title('Signal x11 - Transmit to send a digital 0101','fontSize',18)
subplot(917);
stem(n,x0110, 'r','Marker','none','LineWidth',1)
title('Signal x11 - Transmit to send a digital 0110','fontSize',18)
subplot(918);
stem(n,x0111, 'r','Marker','none','LineWidth',1)
title('Signal x11 - Transmit to send a digital 0111','fontSize',18)
subplot(919);
stem(n,x1000, 'r','Marker','none','LineWidth',1)
title('Signal x11 - Transmit to send a digital 1000','fontSize',18)
subplot(921);
stem(n,x1001, 'r','Marker','none','LineWidth',1)
title('Signal x11 - Transmit to send a digital 1001','fontSize',18)
subplot(922);
stem(n,x1010, 'r','Marker','none','LineWidth',1)
title('Signal x11 - Transmit to send a digital 1010','fontSize',18)
subplot(923);
stem(n,x1011, 'r','Marker','none','LineWidth',1)
title('Signal x11 - Transmit to send a digital 1011','fontSize',18)
subplot(924);
stem(n,x1100, 'r','Marker','none','LineWidth',1)
title('Signal x11 - Transmit to send a digital 1100','fontSize',18)
subplot(925);
stem(n,x1101, 'r','Marker','none','LineWidth',1)
title('Signal x11 - Transmit to send a digital 1101','fontSize',18)
subplot(926);
stem(n,x1110, 'r','Marker','none','LineWidth',1)
title('Signal x11 - Transmit to send a digital 1110','fontSize',18)
subplot(927);
stem(n,x1111, 'r','Marker','none','LineWidth',1)
title('Signal x11 - Transmit to send a digital 1111','fontSize',18)
noisefactor = 0.2
TX = randi([1 16]);
y=signals(:,TX) + noisefactor*randn(size(x0000));
y=y./norm(y); % normalize y
subplot(928)
stem(L,L,'k','Marker','none','LineWidth',1)
title('Received signal - Which Symbol is it?','fontSize',18)
%compute the inter products between y and all of the symbols:
innerproductsym0000 = abs (dot(y,x0000) )
innerproductsym0001 = abs (dot(y,x0001) )
innerproductsym0010 = abs (dot(y,x0010) )
innerproductsym0011 = abs (dot(y,x0011) )
innerproductsym0100 = abs (dot(y,x0100) )
innerproductsym0101 = abs (dot(y,x0101) )
innerproductsym0110 = abs (dot(y,x0110) )
innerproductsym0111 = abs (dot(y,x0111) )
innerproductsym1000 = abs (dot(y,x1000) )
innerproductsym1001 = abs (dot(y,x1001) )
innerproductsym1010 = abs (dot(y,x1010) )
innerproductsym1011 = abs (dot(y,x1011) )
innerproductsym1100 = abs (dot(y,x1100) )
innerproductsym1101 = abs (dot(y,x1101) )
innerproductsym1110 = abs (dot(y,x1110) )
innerproductsym1111 = abs (dot(y,x1111) )
  2 Comments
ethan watts
ethan watts on 27 Apr 2022
yes my question is how can i go about making all 16 graphs plot in the run window the current code is giving me this, and it is still missing 3 out of the 13 plots

Sign in to comment.

Answers (1)

Johannes Hougaard
Johannes Hougaard on 27 Apr 2022
You have to define all your subplots in the [9 2] grid - the code you present show the first 9 graphs in a [9 1] grid and the last 7 in a [9 2] grid.
That would be that you change the code to
subplot(9,2,1);
stem(n,x0000, 'b','Marker','none','LineWidth',1)
title('Signal x0000 - Transmit to send a digital 0000','fontSize',18)
subplot(9,2,2);
stem(n,x0001, 'r','Marker','none','LineWidth',1)
title('Signal x0001 - Transmit to send a digital 0001','fontSize',18)
% Many lines to follow until
subplot(9,2,10);
stem(n,x1001, 'r','Marker','none','LineWidth',1)
title('Signal x11 - Transmit to send a digital 1001','fontSize',18)
subplot(9,2,11);
stem(n,x1010, 'r','Marker','none','LineWidth',1)
title('Signal x11 - Transmit to send a digital 1010','fontSize',18)
% Finishing with
subplot(9,2,16);
stem(n,x1111, 'r','Marker','none','LineWidth',1)
title('Signal x11 - Transmit to send a digital 1111','fontSize',18)
noisefactor = 0.2
TX = randi([1 16]);
y=signals(:,TX) + noisefactor*randn(size(x0000));
y=y./norm(y); % normalize y
subplot(9,2,17)
stem(L,L,'k','Marker','none','LineWidth',1)
title('Received signal - Which Symbol is it?','fontSize',18)
Which for your full code could be something like this
clear
clc
N = 256;
n = 0:N-1;
x0000 = [ones(16,1); zeros(240,1)];
x0000 = x0000/norm(x0000);
x0001 = [zeros(16,1); ones(16,1); zeros(224,1)];
norm(x0001);
x0001 = x0001/norm(x0001);
x0010 = [zeros(32,1); ones(16,1); zeros(208,1)];
norm(x0010);
x0010 = x0010/norm(x0010);
x0011 = [zeros(48,1);ones(16,1); zeros(192,1)];
norm(x0011);
x0011 = x0011/norm(x0011);
x0100 = [zeros(64,1);ones(16,1); zeros(176,1)];
norm(x0100);
x0100 = x0100/norm(x0100);
x0101 = [zeros(80,1); ones(16,1); zeros(160,1)];
norm(x0101);
x0101 = x0101/norm(x0101);
x0110 = [zeros(96,1); ones(16,1); zeros(144,1)];
norm(x0110);
x0110 = x0110/norm(x0110);
x0111 = [zeros(112,1); ones(16,1); zeros(128,1)];
norm(x0111);
x0111 = x0111/norm(x0111);
x1000 = [zeros(128,1); ones(16,1); zeros(112,1)];
norm(x1000);
x1000 = x1000/norm(x1000);
x1001 = [zeros(144,1); ones(16,1); zeros(96,1)];
norm(x1001);
x1001 = x1001/norm(x1001);
x1010 = [zeros(160,1); ones(16,1); zeros(80,1)];
norm(x1010);
x1010 = x1010/norm(x1010);
x1011 = [zeros(176,1); ones(16,1); zeros(64,1)];
norm(x1011);
x1011 = x1011/norm(x1011);
x1100 = [zeros(192,1); ones(16,1); zeros(48,1)];
norm(x1100);
x1100 = x1100/norm(x1100);
x1101 = [zeros(208,1); ones(16,1); zeros(32,1)];
norm(x1101);
x1101 = x1101/norm(x1101);
x1110 = [zeros(224,1); ones(16,1); zeros(16,1)];
norm(x1110);
x1110 = x1110/norm(x1110);
x1111 = [zeros(240,1); ones(16,1)];
norm(x1111);
x1111 = x1111/norm(x1111);
signals=[x0000,x0001,x0010,x0011,x0100,x0101,x0110,x0111,x1000,x1001,x1010,x1011,x1100,x1101,x1110,x1111];
fh = figure;
ii = 1;
subplot(9,2,ii); ii = ii+1;
stem(n,x0000, 'b','Marker','none','LineWidth',1)
title('Signal x0000 - Transmit to send a digital 0000','fontSize',18)
subplot(9,2,ii); ii = ii+1;
stem(n,x0001, 'r','Marker','none','LineWidth',1)
title('Signal x0001 - Transmit to send a digital 0001','fontSize',18)
subplot(9,2,ii); ii = ii+1;
stem(n,x0010, 'r','Marker','none','LineWidth',1)
title('Signal x0010 - Transmit to send a digital 0010','fontSize',18)
subplot(9,2,ii); ii = ii+1;
stem(n,x0011, 'r','Marker','none','LineWidth',1)
title('Signal x11 - Transmit to send a digital 0011','fontSize',18)
subplot(9,2,ii); ii = ii+1;
stem(n,x0100, 'r','Marker','none','LineWidth',1)
title('Signal x11 - Transmit to send a digital 0100','fontSize',18)
subplot(9,2,ii); ii = ii+1;
stem(n,x0101, 'r','Marker','none','LineWidth',1)
title('Signal x11 - Transmit to send a digital 0101','fontSize',18)
subplot(9,2,ii); ii = ii+1;
stem(n,x0110, 'r','Marker','none','LineWidth',1)
title('Signal x11 - Transmit to send a digital 0110','fontSize',18)
subplot(9,2,ii); ii = ii+1;
stem(n,x0111, 'r','Marker','none','LineWidth',1)
title('Signal x11 - Transmit to send a digital 0111','fontSize',18)
subplot(9,2,ii); ii = ii+1;
stem(n,x1000, 'r','Marker','none','LineWidth',1)
title('Signal x11 - Transmit to send a digital 1000','fontSize',18)
subplot(9,2,ii); ii = ii+1;
stem(n,x1001, 'r','Marker','none','LineWidth',1)
title('Signal x11 - Transmit to send a digital 1001','fontSize',18)
subplot(9,2,ii); ii = ii+1;
stem(n,x1010, 'r','Marker','none','LineWidth',1)
title('Signal x11 - Transmit to send a digital 1010','fontSize',18)
subplot(9,2,ii); ii = ii+1;
stem(n,x1011, 'r','Marker','none','LineWidth',1)
title('Signal x11 - Transmit to send a digital 1011','fontSize',18)
subplot(9,2,ii); ii = ii+1;
stem(n,x1100, 'r','Marker','none','LineWidth',1)
title('Signal x11 - Transmit to send a digital 1100','fontSize',18)
subplot(9,2,ii); ii = ii+1;
stem(n,x1101, 'r','Marker','none','LineWidth',1)
title('Signal x11 - Transmit to send a digital 1101','fontSize',18)
subplot(9,2,ii); ii = ii+1;
stem(n,x1110, 'r','Marker','none','LineWidth',1)
title('Signal x11 - Transmit to send a digital 1110','fontSize',18)
subplot(9,2,ii); ii = ii+1;
stem(n,x1111, 'r','Marker','none','LineWidth',1)
title('Signal x11 - Transmit to send a digital 1111','fontSize',18)
noisefactor = 0.2;
TX = randi([1 16]);
y=signals(:,TX) + noisefactor*randn(size(x0000));
y=y./norm(y); % normalize y
subplot(9,2,ii); ii = ii+1; clear ii
stem(L,L,'k','Marker','none','LineWidth',1)
Unrecognized function or variable 'L'.
title('Received signal - Which Symbol is it?','fontSize',18)
fh.WindowState = 'maximized'; clear fh

Tags

Community Treasure Hunt

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

Start Hunting!