شبیه‌سازی شبکه‌های بی سیم و کامپیوتری
شبیه سازی تخصصی شبکه‌های بی سیم و کامپیوتری مقاطع کارشناسی تا دکترا
  • شبیه سازی تخصصی شبکه‌های بی سیم و کامپیوتری مقاطع کارشناسی تا دکترا

مشخصات بلاگ
شبیه‌سازی شبکه‌های بی سیم و کامپیوتری

امکان سفارش، شبیه سازی مقاله و پایان نامه وجود دارد،
مطالب، با ذکر منبع قابل انتشار در سایت ها و وبلاگ ها و.. می باشد.
جهت دریافت مشاوره رایگان تماس بگیرید:

شماره تماس: 09147082079-0098
آیدی تلگرامی:https://t.me/MuosSA_NbO
جی میل :mo30no@gmail.com

تمامی کدهای این وبلاگ در حال حاضر به زبان متلب می باشد

«آنچه می‌دانیم ناچیز و آنچه نمی‌دانیم عظیم و وسیع است»
$$پیر سیمون لاپلاس$$

در این پست نحوه ایجاد یک شلنگ سینوسی از طریق رشد دادن چند ضلعی، در راستای یک مسیر سینوسی روی صفحه xy آورده شده است، 

توضیح مختصر: به ازای زوایای مثبت، چرخش  در خلاف عقربه های ساعت و به ازای زوایای منفی، چرخش در جهت عقربه های ساعت صورت گرفته است. از دو تابع rotateParameter برای چرخش  و  angl= anglOnePolToTwoPol(angl,type) برای تغییر زوایای دوقطبی به تک قطبی استفاده شده، مثلا 270 را به -90 درجه تبدیل می کنه( در حالی که نوع 2 باشه) و در نوع 1( رادیان)، مثلا (pi/2) *3 را به -pi/2 تبدیل می کنه.

کد اجرایی:

%% clear commands
function xx
delete(allchild(0));close all;
clear;
clc;

%% path commands
file=matlab.desktop.editor.getActive;
try
    fileDetail=dir(file.Filename);
    folderName=fileDetail.folder;
catch
    index=strfind( file.Filename,'\');
    folderName=file.Filename(1:index(end)-1);
end
paths=genpath(folderName);
addpath(paths);
cd(folderName);


side=20;
t=linspace(0,2*pi ,side+1);
side1=50;
t1=linspace(0, 2*pi ,side1+1);
ph=0;

path.x=  t1 ;
path.y= sin(t1+ph) *5  ;

plot([t1;path.x ] ,[path.y*0 ;path.y] ,'r' );hold on
plot3([-7:7]',[-7:7]'*0,[-7:7]'*0);hold on
plot3([-7:7]'*0,[-7:7]' ,[-7:7]'*0 );hold on
plot3([-7:7]'*0,[-7:7]'*0,[-7:7]' );hold on
text(7,0,0,'x');hold on
text(0,7,0,'y');hold on
text(0,0,7,'z');hold on
% [path.x,path.y]=divider(path.x,path.y,2);
% [~,t1]=divider(t1,t1,2);


fig.x= cos(t )/2  ;
fig.y=  0*(0:side);
fig.z= sin(t  )/2   ;
fig1=fig;
% plot(t1,tan(t1))

for in=1:length(path.x)-1
    plot3(fig.x+path.x(in),fig.y+path.y(in) ,fig.z ,'b-');hold on


    if (anglOnePolToTwoPol(t1(in),1)>0)
        [ fig.x, fig.y, fig.z]=rotateParameter(fig1,[0,0,1],   -rad2deg(t1(in)) );
    elseif (anglOnePolToTwoPol(t1(in),1)<0)
        [ fig.x, fig.y, fig.z]=rotateParameter(fig1,[0,0,1],  rad2deg(t1(in)) );
    end



    surf([fig.x+path.x(in);fig.x+path.x(in+1) ],[fig.y+path.y(in);fig.y+path.y(in+1) ],[fig.z;fig.z],'facecolor','k');hold on; alpha(0.2)

    view(3);
    axis('equal')
end
end

function [ newx, newy, newz]=rotateParameter(matrixObj,azel,alpha)

u = azel(:)/norm(azel);
alph = alpha*pi/180;
cosa = cos(alph);
sina = sin(alph);
vera = 1 - cosa;
x = u(1);
y = u(2);
z = u(3);
rot = [cosa+x^2*vera x*y*vera-z*sina x*z*vera+y*sina; ...
    x*y*vera+z*sina cosa+y^2*vera y*z*vera-x*sina; ...
    x*z*vera-y*sina y*z*vera+x*sina cosa+z^2*vera]';

x = matrixObj.x;
y = matrixObj.y;
z = matrixObj.z;

[m,n] = size(z);
if numel(x) < m*n
    [x,y] = meshgrid(x,y);
end

[m,n] = size(x);
newxyz = [x(:) , y(:) , z(:) ];
newxyz = newxyz*rot;
newx =   reshape(newxyz(:,1),m,n);
newy =  reshape(newxyz(:,2),m,n);
newz =  reshape(newxyz(:,3),m,n);

end



function angl= anglOnePolToTwoPol(angl,type)
if nargin==1
    type=1;
end
switch type
    case 1% radian type
        angl=mod(angl,2*pi);
        miInd=angl<0;
        angl(miInd)=(2*pi)+angl(miInd);

    case 2
        angl=mod(angl,360);
        miInd=angl<0;
        angl(miInd)=(360)+angl(miInd);
end
end

نمونه خروجی:

دانلود کد

موافقین ۰ مخالفین ۰ ۰۱/۰۴/۱۶
موسی حسن زاده

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی