搜索内容 搜索用户

# 14 麦片

050

3主题 0最佳答案
 本帖最后由 Lorierica 于 2020-7-3 18:06 编辑 azimuth=[]; JD={}; basestation=struct('x',{1000,-57.7350000000000,-57.735,600,441.269,442.265000000000,-400,-557.735000000000,-557.735000000000,1100,942.265000000000,942.265000000000,900,-1057.73500000000,-1057.73500000000,600,442.265000000000,442.265000000000,-400,-557.735000000000,-557.735000000000},'y',{0,-100,100,900,801.242000000000,1000,900,800,1000,0,-100,100,0,-100,100,-900,-1000,-800,-900,-1000,-800}); sgx=-1245:10:1245; sgy=-995:10:995; for t=1:21;     for i=1:250         for j=1:200   azimuth=getAntDir(basestation, sgx, sgy,t,i,j)         end         JD{t}=azimuth;     end end 这个是主函数代码 function   azimuth=getAntDir(basestation, sgx, sgy,t,i,j) deltaLoc = (sgx(t)-basestation.x(i))+1i*(sgy(t)-basestation.y(j));%basestation.x为基站横坐标 azimuth  = 90-angle(deltaLoc)/pi*180; azimuth  = azimuth+360*(azimuth<0); azimuth  = azimuth-1/3*pi; azimuth  = azimuth+360*(azimuth<0); end 这个是自己定义的函数代码 我想执行主函数，计算21组数组，每组数组通过定义的函数计算出250×200个azimuth，然后保存在JD里，但是现在提示需要大括号或点索引表达式中的一个输出，但结果有 21 个。不知道为什么，希望有高人指点一二，万分感谢

# 论坛优秀回答者

9主题 347最佳答案
• 关注者： 81

 仅供参考 azimuth=[]; JD={}; basestation=struct('x',{1000,-57.7350000000000,-57.735,600,441.269,442.265000000000,-400,-557.735000000000,-557.735000000000,1100,942.265000000000,942.265000000000,900,-1057.73500000000,-1057.73500000000,600,442.265000000000,442.265000000000,-400,-557.735000000000,-557.735000000000},'y',{0,-100,100,900,801.242000000000,1000,900,800,1000,0,-100,100,0,-100,100,-900,-1000,-800,-900,-1000,-800}); sgx=-1245:10:1245; sgy=-995:10:995; for t=1:21     for i=1:21         for j=1:21             azimuth=getAntDir(basestation, sgx, sgy,t,i,j)         end         JD{t}=azimuth;     end end function   azimuth=getAntDir(basestation, sgx, sgy,t,i,j) deltaLoc = (sgx(t)-basestation(i).x)+1i*(sgy(t)-basestation(j).y);%basestation.x为基站横坐标 azimuth  = 90-angle(deltaLoc)/pi*180; azimuth  = azimuth+360*(azimuth<0); azimuth  = azimuth-1/3*pi; azimuth  = azimuth+360*(azimuth<0); end复制代码

# 14 麦片

050

3主题 0最佳答案
楼主| 发表于 2020-7-3 21:14:21 | 显示全部楼层
 20141303 发表于 2020-7-3 18:18 仅供参考 还是不行，显示出错和之前一样

# 论坛优秀回答者

9主题 347最佳答案
• 关注者： 81

 在MATLAB2019b可以运行了啊

# 14 麦片

050

3主题 0最佳答案
楼主| 发表于 2020-7-3 23:38:28 | 显示全部楼层
 本帖最后由 Lorierica 于 2020-7-3 23:41 编辑 20141303 发表于 2020-7-3 21:24 在MATLAB2019b可以运行了啊 那请问，我是想将这些输出值输入到21个数组之中，每一个数组有250×200个值，请问该怎么办

# 论坛优秀回答者

9主题 347最佳答案
• 关注者： 81

 使azimuth为250×200的矩阵

# 14 麦片

050

3主题 0最佳答案
楼主| 发表于 2020-7-4 10:13:34 | 显示全部楼层
 20141303 发表于 2020-7-4 09:17 使azimuth为250×200的矩阵 但是按照你写的代码的话，是不是就是i和j只循环了21次呢

# 论坛优秀回答者

9主题 347最佳答案
• 关注者： 81

 可是i,j不是调用basestation结构体的x,y吗？

# 14 麦片

050

3主题 0最佳答案
楼主| 发表于 2020-7-4 11:14:21 | 显示全部楼层
 20141303 发表于 2020-7-4 10:41 可是i,j不是调用basestation结构体的x,y吗？ 哦哦，谢谢你，我写错了，应该是sgx(i)和sgy（j）,base(t),,但是这样写的话就是索引超出矩阵维度了

# 论坛优秀回答者

9主题 347最佳答案
• 关注者： 81

 仅供参考 azimuth=[]; JD={}; basestation=struct('x',{1000,-57.7350000000000,-57.735,600,441.269,442.265000000000,-400,-557.735000000000,-557.735000000000,1100,942.265000000000,942.265000000000,900,-1057.73500000000,-1057.73500000000,600,442.265000000000,442.265000000000,-400,-557.735000000000,-557.735000000000},'y',{0,-100,100,900,801.242000000000,1000,900,800,1000,0,-100,100,0,-100,100,-900,-1000,-800,-900,-1000,-800}); sgx=-1245:10:1245; sgy=-995:10:995; for t=1:21     for i=1:length(sgx)         for j=1:length(sgy)             azimuth(i,j)=getAntDir(basestation, sgx, sgy,t,i,j);         end             end     JD{t}=azimuth; end function   azimuth=getAntDir(basestation, sgx, sgy,t,i,j) deltaLoc = (sgx(i)-basestation(t).x)+1i*(sgy(j)-basestation(t).y);%basestation.x为基站横坐标 azimuth  = 90-angle(deltaLoc)/pi*180; azimuth  = azimuth+360*(azimuth<0); azimuth  = azimuth-1/3*pi; azimuth  = azimuth+360*(azimuth<0); end复制代码

 您需要登录后才可以回帖 登录 | 注册 本版积分规则 回帖后跳转到最后一页