导入excel表,计算梯度图,导出单元数据
clc;
clear all;
%读取单元相位数据
filename = ‘phase.xlsx’;
serial_num = xlsread(filename, ‘A2:A9’); % 读取序列号,
phase_lib = xlsread(filename, ‘B2:B9’); % 读取相位
alpha = xlsread(filename, ‘C2:C9’); % 读取alpha
beta = xlsread(filename, ‘D2:D9’); % 读取beta
w = xlsread(filename, ‘E2:E9’); % 读取w
r = xlsread(filename, ‘F2:F9’); % 读取r
phase_lib = mod(phase_lib + 360, 360); %加360,保证相位为正
p = 110; %超表面单元周期
num =7;
phases_rad = [0, pi/4, pi/2, 3pi/4, pi, 5pi/4, 3pi/2, 7pi/4];
phases_deg = rad2deg(phases_rad);
phase_need = zeros(8, 8);
for i = 1:8
% 这里我们实际上不需要循环,因为每行都是相同的
% 但为了清晰起见,我还是展示了它
phase_need(i, 1:8) = phases_deg; % 将相位值放入每行的前8个位置
end
f1 = figure;
imagesc(phase_need); %绘图
%以下是生成一个单元数据信息,记录相位图每个位置需要那个单元结构
SERIAL_NUM = zeros(size(phase_need)); %生成和phase_need大小相同的零矩阵
ALPHA = zeros(size(phase_need));
BETA = zeros(size(phase_need));
R = zeros(size(phase_need));
W = zeros(size(phase_need));
% 使用两个循环遍历phase_need矩阵的每个元素
[rows, cols] = size(phase_need);
for i = 1:rows
for j = 1:cols
% 提取当前元素
current_phase = phase_need(i, j);
% 找到phase_lib中与当前相位最接近的索引
[~, idx] = min(abs(phase_lib - current_phase));
% 填充SERIAL_NUM, ALPHA, BETA, R, W矩阵
SERIAL_NUM(i, j) = serial_num(idx);
BETA(i, j) = beta(idx);
ALPHA(i, j) = alpha(idx);
R(i, j) = r(idx);
W(i, j) = w(idx);
end
end
f2 = figure;
imagesc(SERIAL_NUM); %绘图
BETA=reshape(BETA,[],1);
ALPHA=reshape(ALPHA,[],1);
R=reshape(R,[],1);
W=reshape(W,[],1);
%数据整形
xlswrite( [‘./单元数据’ num2str(num+1) ‘x’ num2str(num+1) ‘.xlsx’],ALPHA,‘A1:A64’);
xlswrite( [‘./单元数据’ num2str(num+1) ‘x’ num2str(num+1) ‘.xlsx’],BETA,‘B1:B64’);
xlswrite( [‘./单元数据’ num2str(num+1) ‘x’ num2str(num+1) ‘.xlsx’],R,‘C1:C64’);
xlswrite( [‘./单元数据’ num2str(num+1) ‘x’ num2str(num+1) ‘.xlsx’],W,‘D1:D64’);
%写入xlsx文档