92 lines
3.2 KiB
Matlab
92 lines
3.2 KiB
Matlab
% Open file to write
|
|
csvFileName = 'pattern_data.csv';
|
|
fileID = fopen(csvFileName, 'w');
|
|
fprintf(fileID, 'Theta,Phi,Pattern\n'); % CSV headers
|
|
|
|
% Define angles (break into smaller chunks)
|
|
theta = -90:1:90;
|
|
phi = -180:1:180;
|
|
chunk_size = 50;
|
|
|
|
%Size of PCB
|
|
pcbThickness = 0.508e-3;
|
|
pcbLength = 100e-3;
|
|
pcbWidth = 100e-3;
|
|
|
|
n_array = 3;
|
|
m_array = 2;
|
|
|
|
f = 10.5e+9;
|
|
c = 3e+8;
|
|
lambda = c/f;
|
|
|
|
Length_patch = 8.76e-3;
|
|
Width_patch = 9.545e-3;
|
|
dist_patch = lambda/2;
|
|
feeder_width = 0.94e-3;
|
|
delta_phy = 15; %in degrees
|
|
|
|
%Specifying Material of PCB
|
|
pcbMaterial = 'RO4350B';
|
|
pcbEpsilonR = 3.48;
|
|
%Creating dielectic Material
|
|
d = dielectric(pcbMaterial);
|
|
d.EpsilonR = pcbEpsilonR;
|
|
d.Thickness = pcbThickness;
|
|
GndPlane = antenna.Rectangle('Length',pcbLength,'Width',pcbWidth); %Creating Ground Plane of Antenna
|
|
%Creating Different Shapes of antenna
|
|
%Rec1 = antenna.Rectangle('Length',feeder_width,'Width',dist_patch-Length_patch,'Center',[0,(dist_patch-Length_patch)/2]); %feeder
|
|
%Rec2 = antenna.Rectangle('Length',Length_patch,'Width',Width_patch,'Center',[0,(dist_patch-Length_patch)+(Length_patch)/2]); %patch
|
|
|
|
for i=1:1:n_array
|
|
for j=1:1:m_array
|
|
Rec1 = Rec1 + antenna.Rectangle('Length',feeder_width,'Width',dist_patch-Length_patch,'Center',[(i-1)*(dist_patch),(j-1)*(dist_patch)+(dist_patch-Length_patch)/2]);
|
|
Rec2 = Rec2 + antenna.Rectangle('Length',Length_patch,'Width',Width_patch,'Center',[(i-1)*(dist_patch),(j-1)*(dist_patch)+(dist_patch-Length_patch)+(Length_patch)/2]);
|
|
end
|
|
end
|
|
|
|
|
|
%Adding all different shapes of antenna
|
|
AntennaPlane = Rec1 + Rec2;
|
|
|
|
%%Creating PCB Stack
|
|
p = pcbStack;
|
|
p.Name = 'patch slot';
|
|
p.BoardShape = GndPlane;
|
|
p.BoardThickness = pcbThickness;
|
|
p.Layers = {AntennaPlane,d,GndPlane};
|
|
%[x Cordinate,y Cordinate,startLayer stopLayer]
|
|
% p.FeedLocations = [0,0,1,3;dist_patch,0,1,3;dist_patch*2,0,1,3;dist_patch*3,0,1,3;dist_patch*4,0,1,3;dist_patch*5,0,1,3;dist_patch*6,0,1,3;dist_patch*7,0,1,3;dist_patch*8,0,1,3;dist_patch*9,0,1,3;dist_patch*10,0,1,3;dist_patch*11,0,1,3;dist_patch*12,0,1,3;dist_patch*13,0,1,3;dist_patch*14,0,1,3;dist_patch*15,0,1,3];
|
|
% p.FeedPhase = [0,delta_phy, delta_phy*2, delta_phy*3, delta_phy*4, delta_phy*5, delta_phy*6, delta_phy*7, delta_phy*8, delta_phy*9, delta_phy*10, delta_phy*11, delta_phy*12, delta_phy*13, delta_phy*14, delta_phy*15];
|
|
|
|
p.FeedLocations = [0,0.001,1,3;dist_patch,0.001,1,3;dist_patch*2,0.001,1,3];
|
|
|
|
|
|
%Plotting Different patterns and graphs
|
|
figure(1);
|
|
show(p); %Display Antenna
|
|
%pattern(p,10.5e9); %Display Radiation Pattern at 10.5GHz
|
|
% Process and save in chunks
|
|
for i = 1:chunk_size:length(theta)
|
|
for j = 1:chunk_size:length(phi)
|
|
% Simulated computation (replace with actual pattern function)
|
|
p_val = rand(); % Example placeholder
|
|
|
|
% Write to file
|
|
fprintf(fileID, '%.2f,%.2f,%.6f\n', theta(i), phi(j), p_val);
|
|
end
|
|
end
|
|
|
|
% Close the file
|
|
fclose(fileID);
|
|
|
|
% Display confirmation message
|
|
figure(2);
|
|
disp('Pattern data saved to CSV.');
|
|
|
|
% figure(3);
|
|
% impedance(p,0.8*f:0.05*f:1.2*f); %Display Impedance Graph from 1.6GHz to 2.2GHz
|
|
% freq = linspace(0.8*f, 1.2*f, 50); % Creating Frequency Vector
|
|
% s = sparameters(p,freq,50); % Calalculate S11 for all frequencys
|
|
% figure(4);
|
|
% rfplot(s);%Diplay S11 Plot |