필터 지우기
필터 지우기

Programmatically placing plots into a subplot

조회 수: 4 (최근 30일)
Jrod H
Jrod H 2022년 2월 18일
답변: VINAYAK LUHA 2023년 10월 11일
I am programatically working with the antenna toolbox and getting a bunch of plots for impedance, S11, pattern, etc. I have tried to put these into a subplot, but it seems this will not work for me. The plots are interally created by calling built-in fucntions such as impedance( ), sparameters( ), current( ), pattern( ), patternAzimuth( ), and patternElevation( ). Unfortunately I do not see a way to get a figure handle from these built in functions. Is there a work around so I can have a single subplot with all of these figures in one window?
Thanks,
Jrod
  댓글 수: 2
Star Strider
Star Strider 2022년 2월 18일
I don’t have the Antenna Toolbox, however I can likely access it here with the online Run feature.
Please post relevant parts of your code (including necessary data, preferably as text or spreadsheet files since dealing with .mat files with the online Run feature can be challenging) so that it is possible to run it and experiment with it. (Some Toolbox plots, such as those produced by the Control System Toolbox, can be challenging to modify, however getting relevant properties and using them is usually possible.)
Jrod H
Jrod H 2022년 2월 18일
편집: Jrod H 2022년 2월 18일
Thank you Star Strider! The code below should work in Matlab 2020b. You should see seven different figures pop up. I would like to find a way to arrange all of the figures into a single window if possible. I tried using subplot and also GCF, but neither was letting me do what I had hoped for.
clc; clear; close all;
%% Constants
c = physconst('lightspeed');
frequency = 2.45e9;
Z0 = 50;
numFreqPoints = 5;
%% Initial Calculations
lambda_m = c / frequency;
BW = 100e6;
fmin = frequency - BW;
fmax = frequency + BW;
freqRange = linspace(fmin, fmax, numFreqPoints);
%% Create The initial Default Antenna Object And Plot It
insetPatch = design(patchMicrostripInsetfed, frequency);
antennaPlotting(insetPatch, freqRange, frequency)
%% Create The Plots
function plots = antennaPlotting(antObj, freqRange, freq)
%Show antenna model
figure('Name', 'Antenna Geometry', 'NumberTitle', 'off')
show(antObj);
%impedance for dipole
figure('Name', 'Impedance', 'NumberTitle', 'off');
impedance(antObj, freqRange);
%s11 for dipole
figure('Name', 'S11', 'NumberTitle', 'off');
s = sparameters(antObj, freqRange);
rfplot(s)
%current for dipole
figure('Name', 'Current Distribution', 'NumberTitle', 'off');
current(antObj, freq);
%pattern for dipole
figure('Name', '3D Pattern', 'NumberTitle', 'off');
pattern(antObj, freq);
%azimuth for dipole
figure('Name', 'Azimuthal Pattern', 'NumberTitle', 'off');
patternAzimuth(antObj, freq, 0, 'Azimuth', [0:5:360]);
%elevation for dipole
figure('Name', 'Elevation Pattern', 'NumberTitle', 'off');
patternElevation(antObj, freq, 0, 'Elevation', [0:5:360]);
end

댓글을 달려면 로그인하십시오.

답변 (1개)

VINAYAK LUHA
VINAYAK LUHA 2023년 10월 11일
Hi Jrod,
I understand that you are utilizing built-in functions from the Antenna Toolbox to generate various plots. However, you are seeking a solution to organize these plots into subplots within a single figure.
Here is a workaround which involves saving the generated figures and then arranging them in subplots:
  1. Firstly, Save each of the generated figures as ".fig" files using the "savefig" function. Refer to the documentation of "savefig" here - https://in.mathworks.com/help/matlab/ref/savefig.html .
  2. Next, For arranging MATLAB figure (.fig) files into subplots, you can refer to the following MATLAB answers post: https://in.mathworks.com/matlabcentral/answers/101806-how-can-i-insert-my-matlab-figure-fig-files-into-multiple-subplots .
I hope this helps you organize your plots into subplots within a single figure.
Regards,
Vinayak Luha

카테고리

Help CenterFile Exchange에서 Antennas, Microphones, and Sonar Transducers에 대해 자세히 알아보기

제품


릴리스

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by