نمایش نتایج 1 تا 2 از 2

نام تاپیک: تولید اعداد تصادفی در متلب

  1. #1

    تولید اعداد تصادفی در متلب

    با سلام
    با استفاده از کد زیر می خواهم اعداد تصادفی در 60 متر طول و 50 متر عمق بدست آورم.
    چه تغییراتی به کد بدهم؟
    ممنون میشم زودتر جواب دهید.% VONK2D.M : 2D Von Karman Distribution
    %
    % Call : [randdata,x,z,data,expcorr]=vonk2d(rseed,dx,dz,ax,az,ix,iz,pop,med,nu,vel,fra c)
    %
    % rseed : Random Seed number
    % dx,dz : Spatial distance
    % ax,az : Horizontal, vertical lengthscale
    % ix,iz : size of model in same scale as ax,az
    % nu : Hurst Number
    %
    % pop : Population, [1]:Gaussian [2]:PDF
    % med : Medium , [1]:Gaussian [2]:Exponential [3]: Von Karman
    % [4]:Pink [5]:Brown
    % vel : Scalar or vector of velocities, For pop=pdf,v(1) is used as
    % +/-max velocity of input field
    % frac : fraction assigned to each velocity (normalized), same size
    % as vel
    %
    % (C) 1998-2001 Thomas Mejer Hansen (tmh@gfy.ku.dk)
    % UPDATED APR 05 1999 /TMH
    % Octave 2.0.15 and Matlab 5.3 compliant
    %
    function [rdata,x,z,data,expcorr]=vonk2d(rseed,dx,dz,ax,az,ix,iz,pop,med,nu,vel,fra c)

    if nargin==0,

    help vonk2d

    rseed=56;
    dx=25;
    dz=dx;
    ax=750;
    az=200;
    nu=.6;
    ix=6000;
    iz=6000;
    pop=2;
    med=3;
    vel=[6000 6600 7000 2000 5000];
    frac=[.5 .5 .5 .3 .1];
    end

    if nargin==10,
    frac=[1,2,3]; % the same as [.16 .33 .5]
    vel=[2000,3000,4000];
    end

    if pop==1, % POP=GAUSSIAN
    D=3-nu;
    elseif pop==2 % POP=PDF
    D=3-nu/2;
    end


    nx=ceil(ix/dx);
    nz=ceil(iz/dz);
    %disp([' VONK2D : 2D RANDOM MEDIA GENERATOR'])
    %disp([' Using (nx,nz)=(',num2str(nx),',',num2str(nz),')'])

    if (nx/2)~=round(nx/2), ddx=1; nx=nx+ddx; else ddx=0; end
    if (nz/2)~=round(nz/2), ddz=1; nz=nz+ddz; else ddz=0; end


    % SPACEDOMAIN GRID
    %[x,z]=meshgrid(dx*[-nx/2:1:nx/2-1],dz*[-nz/2:1:nz/2-1]);
    x=[1:1:nx]*dx;
    z=[1:1:nz]*dz;

    % WAVENUMBER DOMAIN GRID
    dkx=1/(nx*dx);
    dkz=1/(nz*dz);
    [kx,kz]=meshgrid(2*pi*dkx*[-nx/2:1:nx/2-1],2*pi*dkz*[-nz/2:1:nz/2-1]);

    k=sqrt(kx.^2.*ax.^2+kz.^2.*az.^2);



    if med==1,
    %
    % Gaussian Chh
    %
    % SQRT of the FOURIER TRANSROMF OF Gaussian CORR fkt.
    %disp([' Calculating filter : Chh=Gaussian'])
    expcorr=((ax*az)/2).*exp(-(k.^2./4)); % (Exact F(C_hh(x))
    expcorr=expcorr./max(max(expcorr)); % normalizing sqr(F(C_hh))
    expcorr=sqrt(expcorr); %
    end

    if med==2,
    %
    % Exponential Chh
    %
    % SQRT of the FOURIER TRANSROMF OF exp CORR fkt.
    %disp([' Calculating filter : Chh=exponential'])
    %expcorr=(ax^2+az^2)./((1+k.^2).^(1.5)); % (Exact F(C_hh(x))
    expcorr=1./((1+k.^2).^(1.5)); % (Exact F(C_hh(x))
    expcorr=expcorr./max(max(expcorr)); % normalizing sqr(F(C_hh))
    expcorr=sqrt(expcorr); %
    end

    if med==3,
    %
    % von Karman
    %
    % SQRT of the FOURIER TRANSROMF OF vonk CORR fkt.
    %disp([' Calculating filter : Chh=vonKarman'])
    %disp([' Fractal Dimension : ',num2str(D)])
    %expcorr=((ax*az)/2)./((1+k.^2).^(nu+1)); % (Exact F(C_hh(x))
    expcorr=1./((1+k.^2).^(nu+1)); % (Exact F(C_hh(x))
    expcorr=expcorr./max(max(expcorr)); % normalizing sqr(F(C_hh))
    expcorr=sqrt(expcorr); %
    end



    % DATA
    %
    rand('seed',rseed);
    data=(rand(nz,nx)-.5);


    % GOING TO FOURIER DOMAIN
    %disp([' Going to Fourier Domain(fft)'])
    fdata=fftshift(fft2(data));

    % MULTIPLYING fdata by sqrt(C_hh)
    %disp([' Applying filter'])
    newfdata=fdata.*expcorr;

    %FROM FOURIER TO SPACE DOMAIN
    %disp([' Going to spacedomain (ifft)'])
    randdata=real(ifft2(fftshift(newfdata)));
    rdata=randdata;
    return
    if pop==1,
    % scaling filed according to vel
    rdata=randdata.*2 *vel(1);
    data=data.*2 *vel(1);
    end

    if pop==2
    %disp([' Using pdf population'])
    frac=cumsum(frac./sum(frac)); % normalize and cumsum
    %disp(' Sorting data')
    sdata=sort(randdata(:));
    nn=nx*nz;

    % Calculate critical values in randdata to resemble fraction
    fraclimit=zeros(length(frac+1),1);
    fraclimit(1)=sdata(1);

    for n=1:length(frac); fraclimit(n+1)=sdata(round(nn*frac(n))); end

    fraclimit(1) = fraclimit(1)- 0.1*abs(fraclimit(1));
    fraclimit(length(fraclimit)) = fraclimit(length(fraclimit)) + 0.1*abs(fraclimit(length(fraclimit)));

    rdata=zeros(size(randdata));

    for n=1:length(frac),
    %disp([' Assigning velocities to fraction',num2str(n)])

    % OLD SLOW SOLUTION
    % [x1,z1]=find(randdata>fraclimit(n) & randdata<fraclimit(n+1) ;
    % ixz=find(randdata>fraclimit(n) & randdata<fraclimit(n+1) );

    mask = randdata>fraclimit(n) & randdata<=fraclimit(n+1);
    rdata = rdata + mask*vel(n);
    end
    end

    rdata=rdata(1:1:nz-ddz,1:1:nx-ddx);

    if nargin==0,
    imagesc(x,z,rdata);
    title(['rseed=',num2str(rseed),', dx=dz=',num2str(dx),', ax=',num2str(ax),', az=',num2str(az),', med=',num2str(med),', pop=',num2str(pop),', D=',num2str(D)])
    colorbar;colormap(copper)
    % rseed,dx,dz,ax,az,ix,iz,pop,med,nu,vel,frac)
    end

  2. #2

    نقل قول: تولید اعداد تصادفی در متلب

    نقل قول نوشته شده توسط bahmanbm مشاهده تاپیک
    با سلام
    با استفاده از کد زیر می خواهم اعداد تصادفی در 60 متر طول و 50 متر عمق بدست آورم.
    چه تغییراتی به کد بدهم؟
    ممنون میشم زودتر جواب دهید.
    سلام
    منظورتون از طول و عمق چیه؟ مطمئنید که با تابع rand کارتون راه نمیفته؟

تاپیک های مشابه

  1. سوال: تولید اعداد تصادفی در سی شارپ
    نوشته شده توسط SalmanAdl در بخش C#‎‎
    پاسخ: 30
    آخرین پست: سه شنبه 19 مرداد 1395, 00:12 صبح
  2. سوال: تولید اعداد تصادفی در خانه های آرایه بدون تکرار
    نوشته شده توسط Shahab. در بخش برنامه نویسی در 6 VB
    پاسخ: 7
    آخرین پست: سه شنبه 17 بهمن 1391, 10:10 صبح
  3. تولید اعداد تصادفی در یک بازه
    نوشته شده توسط hadisalahi2 در بخش برنامه‌نویسی جاوا
    پاسخ: 7
    آخرین پست: یک شنبه 27 فروردین 1391, 14:50 عصر
  4. سوال: مشكل در توليد اعداد تصادفي در اينترنت اكسپلورر
    نوشته شده توسط zabihollah در بخش PHP
    پاسخ: 1
    آخرین پست: پنج شنبه 01 اردیبهشت 1390, 21:33 عصر
  5. سوال: تولید اعداد تصادفی در یک رنج خاص
    نوشته شده توسط mohsen57 در بخش برنامه نویسی در 6 VB
    پاسخ: 12
    آخرین پست: پنج شنبه 09 خرداد 1387, 15:26 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •