数组索引必须是正整数或逻辑值。

1视图(30天)
我想要实现一个高斯输入矩形形式和圆形式,对不起,我不知道为什么第一次工作,但seconed不是。错误:“数组索引必须是正整数或逻辑值”。有人能帮我
% %参数设置
L_x = 130 e-6;
L_y = 330 e-6;
dx_coarse = .5e-6;%一步一步粗好
dy_coarse = .5e-6;%一步一步粗好
x = -L_x / 2: dx_coarse: L_x / 2;
y = -L_y / 2: dy_coarse: L_y / 2;
y_coupcenter = 0;
x_coupcenter = 0;
n = ((y)长度,长度(x)) * n_glass;
n_dim =大小(n);
长度= 20;%嗯
宽度= 20;%嗯
GaussInput = 1 * exp (-xg1。^ 2 / (2 * (sigma_x)) ^ 2 -yg1。^ 2 / (2 * (sigma_y)) ^ 2);%对高斯光束的定义
%循环:一个工作
rad_coup = 25 e-6;
激发。coup_center = [y((长度(y) + 1) / 2 + y_coupcenter * 1 e6), x((长度(x) + 1) / 2 + x_coupcenter * 1 e6)];
激发。gausscoup =√(xg (:,: 1) -Excitation.coup_center (2)) ^ 2 + (yg (:,: 1) -Excitation.coup_center (1)) ^ 2) < = rad_coup;
一个= GaussInput (Excitation.gausscoup);
%矩形:不工作
激发。gausscoup = 0(长度(y),长度(x));
Excitation.gausscoup (n_dim (1) + 1) / 2 - y_coupcenter * 1 e6长度/ (2 * dy_coarse * 1 e6): (n_dim (1) 1) / 2 - y_coupcenter * 1 e6 +长度/ (2 * dy_coarse * 1 e6), (n_dim (2) + 1) / 2 - x_coupcenter * 1 e6宽度/ (2 * dx_coarse * 1 e6): (n_dim (2) - 1) / 2 - x_coupcenter * 1 e6 +宽/ (2 * dx_coarse * 1 e6)) = 1;
一个= GaussInput (Excitation.gausscoup);%数组索引必须是正整数或逻辑值。

接受的答案

天星黄
天星黄 2023年1月24日
好吧,我添加一个逻辑()函数,它的工作:
Excitation.gausscoup =逻辑(Excitation.gausscoup);

类别

找到更多的在地球和行星科学帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!