Files
2026-03-15 22:03:54 +00:00

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