日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab 绘制椭圆锥波束指向示意图

發布時間:2024/1/18 循环神经网络 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab 绘制椭圆锥波束指向示意图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考了matlab 繪制任意方向和位置的空間圓錐體中繪制圓錐的思路,在此基礎上加了我需要的應用。就是繪制波束掃描示意圖。

1 原理

  • 根據波束寬度得到在歸一化威力值上的弧長。
  • 然后根據方位和俯仰向弧長產生一個模擬波束參數的圓柱的坐標點。
  • 將圓柱以半徑修正高度坐標,轉換成圓錐。
  • 修正因為繞軸旋轉帶來的波束角度偏差。
  • 將波束旋轉到波束指向位置。
  • cylinder
    [X,Y,Z] = cylinder(r,n) 返回具有指定剖面曲線 r 和圓周上 n 個等距點的圓柱的 x、y 和 z 坐標。該函數以三個 (n+1)×(n+1) 矩陣形式返回 x、y 和 z 坐標。

  • makehgtform
    使用 makehgtform 創建用于轉換、縮放和旋轉圖形對象的變換矩陣。M = makehgtform(‘axisrotate’,[ax,ay,az],t) 圍繞軸 [ax ay az] 旋轉 t 弧度。

  • rotate
    將對象根據給定的坐標軸旋轉給定的角度。
    rotate(h,direction,alpha,origin) 將圖形對象 h 旋轉 alpha 度。指定 h 為曲面、補片、線條、文本或圖像對象。direction 是一個二元素或三元素向量,它與旋轉軸原點共同確定旋轉軸。旋轉軸的原點為origin,默認原點是圖框中心。

  • 2 效果

  • 單個波束
  • 示例:產生指向[30,30],波束寬度為[5,8],歸一化威力為1的波束1 以及 指向[15,7.5],波束寬度為[15,15],歸一化威力為0.5的波束1
    代碼:

    clear all; close all;%% 波束參數 phi = [30 15]; theta = [30 7.5]; bw_azim = [5 15]; bw_elev = [8 15]; r = [1 0.5]; %% 繪圖 figure; for i = 1:length(r)[XSdat,YSdat,ZSdat,XPdat,YPdat,ZPdat] = beam_point(phi(i),theta(i),bw_azim(i),bw_elev(i),r(i));mesh(XSdat,YSdat,ZSdat,(XSdat.^2 + YSdat.^2 + ZSdat.^2));hold on;fill3(XPdat,YPdat,ZPdat,'b');hold on; end xlim([0 1]);ylim([-1 1]);zlim([0 1]); title('歸一化波束指向'); xlabel('x');ylabel('y');zlabel('z');

  • 波束掃描示意圖
  • 3 函數代碼

    function [XSdat,YSdat,ZSdat,XPdat,YPdat,ZPdat] = beam_point(phi,theta,bw_azim,bw_elev,r) %--------------------- 繪制波束指向橢圓錐示意圖 --------------------- % 功能:根據給定的波束指向、波束寬度和歸一化威力繪制波束指向示意圖; % 參數:phi : 方位角(角度制), % theta: 俯仰角(角度制), % bwx : 波束方位向寬度(角度制), % bwy : 波束俯仰向寬度(角度制), % r : 歸一化威力; % 作者: w0shishabi %------------------------------------------------------------------ % 測試 % theta = 30; % phi = 30; % bw_azim = 5; % bw_elev = 8; % r = 1;% 計算圓錐對應在威力球面上的弧長 arc_length_beam_azim = bw_azim * pi * r / 180; arc_length_beam_elev = bw_elev * pi * r / 180;% 計算笛卡爾坐標 px = cosd( theta ) * cosd( phi ); py = cosd( theta ) * sind( phi ); pz = sind( theta ); rotate_axis = [px py pz+1];% 繪制橢圓錐 [x,y,z]=cylinder(linspace(1,0,50),100); x = x * arc_length_beam_azim/2; y = y * arc_length_beam_elev/2; z=(1-z)*r ;% 繪制橢圓錐 fig = figure; EndPlate1=fill3(x(1,:),y(1,:),z(1,:),'b'); hold on; Cylinder=mesh(x,y,z); % xlim([-1 1]);ylim([-1 1]);zlim([0 1]); % rotate是繞軸旋轉,所以需要線修正因為旋轉造成的波束角度偏差 rotate_h = makehgtform('axisrotate',rotate_axis,pi); azim_v = rotate_h(1:3,1:3) * [0;1;0]; angle_correction = acos(dot([0 0 1],azim_v.')/(norm([0 0 1])*norm(azim_v.'))) / pi * 180; rotate(Cylinder,[0 0 1],-angle_correction,[0 0 0]); rotate(EndPlate1,[0 0 1],-angle_correction,[0 0 0]);% 將修正后的波束轉到指向角 rotate(Cylinder,rotate_axis,180,[0 0 0]); rotate(EndPlate1,rotate_axis,180,[0 0 0]);% 獲取模型數據 XSdat = get(Cylinder,'XData'); YSdat = get(Cylinder,'YData'); ZSdat = get(Cylinder,'ZData'); XPdat = get(EndPlate1,'XData'); YPdat = get(EndPlate1,'YData'); ZPdat = get(EndPlate1,'ZData');% 關閉臨時figure close(fig);end

    總結

    以上是生活随笔為你收集整理的matlab 绘制椭圆锥波束指向示意图的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。