matlab产生相位图

导入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文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值