電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

搜索
查看: 13|回復(fù): 0
收起左側(cè)

【問題】分享一些小伙伴問的問題

[復(fù)制鏈接]

238

主題

238

帖子

1400

積分

三級(jí)會(huì)員

Rank: 3Rank: 3

積分
1400
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2021-10-26 00:04:00 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
點(diǎn)擊藍(lán)字5 S; f, {' u' S4 B" g: ~" U
關(guān)注我們
3 M0 n- E/ `3 U+ Z: F: Q% `1 g( W" }: G- ~/ ?6 y/ O
+ ~  n! K2 w# a
好玩的matlab9 T$ R. n, g5 D) ?- L
帶你學(xué)會(huì)不一樣的matlab新玩法  f  B; S+ ]+ t  i
8 L( y& V6 i8 K5 N5 y
今天閑著沒事分享之前一些小伙伴問我的一些matlab問題,有些題目我提供了Matlab和Python兩種解決方法,希望起到拋磚引玉的作用,如果有錯(cuò)誤或者建議希望大家提出。$ X9 J5 l8 L2 X: b' L- x+ m; C
問題1
9 E# o# U3 V7 t/ J 1 _& X0 I! _9 ^9 ?& n
matlab代碼:# O6 A, X8 X* Q5 L
  • clear,clc;mu=input('請輸入mu:');sigma=input('請輸入sigma:');x=mu-sigma*3.5:0.1:mu+sigma*3.5;y=1/(sqrt(2*pi*sigma)).*exp(-(x-mu).^2/(2*sigma^2));plot(x,y,'-r')hold onplot([mu  mu],[0,max(y)],':k')title(['\mu=',num2str(mu),'    \sigma^2=',num2str(sigma^2)])grid minoraxis([mu-sigma*3 mu+sigma*3 0 max(y)*1.08])set(gca,'box','off')
    % K5 A% R( D. }: s% I3 z
    + _4 M( _" q3 ^+ l: V; KPython代碼:
    9 R4 Q. h8 h1 y! O
  • import  numpy as npfrom matplotlib import pyplot as pltmu=eval(input('請輸入mu:'))sigma=eval(input('請輸入sigma:'))x=np.linspace(mu-sigma*3.5,mu+sigma*3.5,100)y=1/(np.sqrt(2*np.pi*sigma))*np.exp(-(x-mu)**2/(2*sigma**2))plt.plot(x,y,'-r')plt.grid(':')plt.title(r'$\mu=$'+str(mu)+' $\sigma^2=$'+str(sigma**2))plt.xlim(mu-sigma*3,mu+sigma*3)plt.ylim(0,max(y)*1.08)$ h7 O1 d/ D/ Y2 P; I6 f

    - Z6 N+ n/ Y5 ]9 t
    2 @7 M! p6 h/ j  o" B6 D
    # H4 \2 V( D; r4 l
    問題2
    # U0 z2 K) x+ d
    - f0 R: Y, E( K3 @- w6 ?- U, Gmatlab代碼/ m' L. @$ a/ R! f/ A
  • clear,clct = 0:pi/20:8*pi;for i=1:3    eval(['x',num2str(i),'=i+zeros(1,length(t));']);    eval(['y',num2str(i),'=','i*cos(i*t);']);    plot3(eval(['x',int2str(i)]),t,eval(['y',int2str(i)]))    hold onendxlabel('x'),ylabel('y'),zlabel('z','rotation',0)axis([0 4 0 8*pi*1.1 -3 3])grid minor
    ! ~1 D. J! ?8 i% O8 n  U3 |( l 9 d4 \% I( r0 k2 F; ?% j
    Python代碼:: o+ q. n* U, j9 T  @
  • import numpy as npfrom matplotlib import pyplot as pltax1 = plt.axes(projection='3d')x=np.linspace(0,8*np.pi,200)y1=np.ones(len(x))z1=2*np.cos(2*x)+2z2=2*np.sin(x)+2plt.xlabel('x')plt.ylabel('y')ax1.plot3D(x,y1,z1,'r-')    #繪制空間曲線ax1.plot3D(x,y1-2,z2,'g-')    #繪制空間曲線plt.ylim(-2,2)plt.show()* @: S% V3 h) \. B3 x
    . ]- g/ N! n- C! X2 H9 v8 Z# R* z
    : Z5 ]) K! z+ o' d0 J
    問題3
    ( t8 v6 P& S& N2 M# ~6 S/ H % |4 F) G" P3 I. @. P7 t" B2 `
    ( ~7 Z0 O9 |: L" k3 ?% A3 B0 @
    思路:將坐標(biāo)軸改成白色Matlab代碼
  • clear,clcx=(1:1:4);y1=[0.362 0.313 0.314 0.402];y2=[-0.0364 -0.0338 -0.0329 -0.0444];e1=[0.01606 0.00825 0.00058 0.00068];e2=[0.00034 0.00031 0.00076 0.00008];hold onbar(x,y1,0.5,'facecolor',[0.7,0.7,0.7],'BaseValue',0);errorbar(x,y1,e1,'.k');bar(x,y2,0.5,'facecolor',[0.7,0.7,0.7]);errorbar(x,y2,e2,'.k');axis([0 5 -0.1 0.5]);set(gca,'xtick',[1:1:4],'XColor','white');set(gca,'xticklabel',{'CK','T1','T2','T3'});set(gca,'xticklabel',[]);% f  d9 s5 |8 ^4 R  ~( A. j: \
    3 `8 C. C4 S) [' a8 Z; C! D
    問題4- }$ |, y+ K+ A2 w. e2 m  D
    0 M% |# Z3 c: x+ z
    Matlab代碼:
  • clearclcx=0:0.01:10*pi;for i=1:length(x)y1(i)=sin(pi/10*x(i))+3+0.05*(randn(1,1)-1);y2(i)=cos(pi/10*x(i))+3+0.06*(randn(1,1)-1);endplot(x,y1,x,y2)axis([0 10*pi 1.5 5])+ P4 F1 Y2 g6 `2 l. b
    ; Y; ?6 f* k6 i! J" B" `! }+ h8 p
    Python代碼:
    6 f/ `) t& _- p: v
  • from matplotlib import pyplot as pltimport numpy as npx=np.linspace(-np.pi,10*np.pi,500)y1=np.ones(len(x))y2=np.ones(len(x))for i in np.arange(0,len(x)):    y1 = np.sin(np.pi /10 * x) + 3 + 0.1 * (np.random.rand()- 1)    y2 = np.cos(np.pi / 10 * x) + 3 + 0.2 * (np.random.rand() - 1)plt.plot(x,y1)plt.plot(x,y2)plt.grid(c='k',linestyle=':')plt.show()
    6 H# r  X1 B: `' @1 x1 r 6 S% w  y9 H3 k2 s! i
    * ^9 j+ v  I( _7 O; ~- _; ^
    問題5
    ) c* g! a$ \3 X! E! A
    ( C8 x; C. B! m( N1 s. O
    * U; I7 ~6 g& k& gMatlab代碼:
  • clear,clc;num=0;for x=1:100    for y=1:100        for z=1:100                if (x+y+z)*(1/x+1/y+1/z)==14                    num=num+1;                    disp(['第',num2str(num),'組合為:x=',num2str(x),'  y=',num2str(y),'  z=',num2str(z)])                end        end    endend%[2K,3K,10K]%[3K,10K,15K]
    7 I$ q- D. [! J) s0 s0 w 6 L% {, r& g$ t9 h7 q( a  Z
    問題6- p* X. O: [2 g5 C2 g5 @) ?

    5 z& M6 D* X# L/ I% ~& B" b- \
    : h% X$ |& f) }4 UMatlab代碼:
  • clear,clc;x = linspace(0,3*pi,200);y = x + 5*rand(1,200);size = 45;color =1:length(x);scatter(x,y,size,color,'filled')grid minorcolorbarcolormap(hot)set(gca,'box','on')
    1 q3 R, D. `$ a* @ 5 t# [2 U) x1 @5 W' }
    問題7
    ; A; B& `+ u( \( v2 B. g
    ( H& M5 h7 H8 m. R# FMatlab代碼:
  • x=rand(1,20);y=rand(1,20);z=rand(1,20);k=convhull(x,y,z);h=trisurf(k,x,y,z);hold onplot3(x,y,z,'+r')h.FaceAlpha=0.5;) F+ u- {/ J/ M1 i' H9 v

    2 W0 h/ j! U5 z; x
    , a* `1 _; `4 u& v+ B問題8. _. t* Q$ ^, T2 r

    + `) n+ X, y' d( f% t
    ' v8 o8 T. W. @: m
    5 Y: v4 Y- E5 ]! Q) N
    9 S& P$ J3 R7 K 然后我要了他的代碼略微修改
  • clcclearclose all N=128;%設(shè)置取樣點(diǎn)數(shù)lamda=632.8e-9;%波長設(shè)置     w0=1.5e-3;%高斯光束的束腰a=5e-3;%元件寬度L=280;x=linspace(-a/2,a/2,N);y=x;[X,Y]=meshgrid(x,y);rr2=X.^2+Y.^2;F=exp(-rr2./w0^2);figuremesh(x,y,F)axis([-1.2/2*a 1.2/2*a -1.2/2*a 1.2/2*a 0 1])title('入射高斯光束的三圍光強(qiáng)分布') %%%%%%%%%%%%%%%%%選擇整形圖形%%%%%%%%%%%%%%%%%%%G=zeros(N,N);G(N/2-15:N/2+15,N/2-15:N/2+15)=1;%正方形%G(sqrt(X.^2+Y.^2)3)=1;%圓形%G(Y>-1e-3&X+Y1e-3&Y-X1e-3)=1;%直角三角形%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Iout=sqrt(sum(sum(F))^2/sum(sum(G)));%輸出光強(qiáng)GG=zeros(N,N);GG(N/2-15:N/2+15,N/2-15:N/2+15)=Iout;%GG(sqrt(X.^2+Y.^2)3)=Iout;figureimshow(G)title('整形圖形')%%%%%%%%%%%%%%%%初始相位設(shè)置%%%%%%%%%%%%%%%%%%%fai{1}=zeros(N,N);%fai{1}=2*pi.*rand(N,N)-pi;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%p=5000;%迭代次數(shù)設(shè)置sn=50;beta=1000;for n=1:p    if n>sn+1        f=F.*exp(i.*fai{n});        g=fft2(f);        psai=angle(g);        gg=G.*exp(i.*psai);        ff=ifft2(gg);        if sum(SSE(n-sn:n-1))/sn-SSE(n-1)0.000001            nn1=ceil(rand*(n-1));%隨機(jī)取出一個(gè)相位            nn2=ceil(rand*(n-1));            fai{n+1}=beta.*fai{nn1}+(1-beta).*fai{nn2};        else            fai{n+1}=angle(ff);        end    else        f=F.*exp(i.*fai{n});        g=fft2(f);        psai=angle(g);        gg=G.*exp(i.*psai);        ff=ifft2(gg);        fai{n+1}=angle(ff);    end    ggg=abs(fft2(F.*exp(i.*fai{n+1})));    %ggg=ggg./2;%max(max(ggg));    SSE(n)=sum(sum((ggg-GG).^2))/sum(sum(GG.^2));    yita(n)=sum(sum(ggg.*GG))./sqrt(sum(sum(ggg.^2))*sum(sum(GG.^2)));end%figure%imshow(ggg)%ggg=abs(fft2(F.*exp(i.*fai{find(SSE==min(SSE))+1})));figuremesh(x,y,ggg)axis([-3e-3 3e-3 -3e-3 3e-3 0 250])title('模擬圖形')figureplot(1:p,SSE)title('均方誤差')figureplot(1:p,yita);title('擬合系數(shù)')figure('name','模擬圖的切面圖')ggg_y=max(ggg);plot(ggg_y)grid minor
    : a8 h+ ]$ V* K& ?0 W7 D5 f+ P8 M3 q8 o

    " ^1 K# S/ I# X8 }" i4 m& F問題9- v+ X2 j( q; V" B* E  }, x+ v! t

    8 d, h+ f% B/ P+ q5 e+ ]5 K% w& I% g: S; ]( C
    Matlab代碼:法一+ {% Q/ n+ }* A3 P% w
  • clearclc[Num,Txt,Raw]=xlsread('test.xlsx');x=[0;Num;0;1];idx=find(x==1);start=find(diff(x)==1)+1;finish=idx(diff(idx)~=1);for i=1:length(finish)    data{i}=x(start(i):finish(i));endfor j=1:length(data)    len(j)=length(data{j});endtabulate(len)法二:) O7 f, F2 y+ y
  • a=[1 ...    3 4 5 ...    7 8 9 10 11 12 13 ...    21 22 23 24 25];inter=find(diff(a)~=1);for i=1:length(inter)+1    if i==1       step{1}=a(1:inter(1));    elseif i==length(inter)+1           step{i}=a(inter(i-1):end);    else        step{i}=a(inter(i-1)+1:inter(i));    endend問題100 t! V; Z# u& m6 l
    7 u0 F, G2 L& J3 y' I( [

    8 x6 C, d- h3 B& Y+ w. g7 BMatlab代碼:
    ; K8 t) P# c2 N4 Y) O0 k* @
  • clcclearx=round(10*rand(20,10));%隨機(jī)生成1-10之間的20行10列的整數(shù)矩陣sum_col=NewSum(x,1);sum_row=NewSum(x,2);
    ) J0 R) C1 ~4 |$ x: X3 ]: a4 J6 f) Yfunction Y=NewSum(x,flag)if flag==1    fg1=2;    fg2=1;elseif   flag==2    fg1=1;    fg2=2;else    error('參數(shù)不存在')endn=0;for i=1:size(x,fg1)    %列    n=n+1;    sumx=0;    for j=1:size(x,fg2)%行        if flag==1            sumx=x(j,i)+sumx;        else            sumx=x(i,j)+sumx;        end    end    Y(i)=sumx;endend參考文獻(xiàn):8 {) R' X6 \1 F4 U# L
    【1】https://idmatlab.blog.csdn.net/article/details/113733467$ }$ T/ h9 J3 J. x4 R( z* P" N
    7 F9 c# _* S5 J$ q+ t: B2 g- E
    往期精彩回顧
    , s) B+ l! }/ F7 c1 R
    ( r- X+ Y) l- r2 _, O- C8 q推薦 | 【高級(jí)繪圖】MATLAB怎么將圖形局部放大推薦 | 【好玩的源碼】Matlab隨機(jī)生成不同顏色的文字推薦 | 【高級(jí)繪圖】Matlab繪制陰影誤差圖 推薦 | 【好玩的源碼】MATLAB 繪制動(dòng)態(tài)正弦函數(shù), o. x6 b' o6 `* ?# ]: l1 C

    ' H/ o# k7 E- P
    , E/ P' P( O$ \& T  @/ B) S$ T
    7 F: l9 s4 S0 D! ]+ R: w4 f# a4 G1 u: b2 A7 y5 z- j- N) ]
    ↓↓↓ 點(diǎn)擊"閱讀原文" 【查看更多信息】
  • 發(fā)表回復(fù)

    您需要登錄后才可以回帖 登錄 | 立即注冊

    本版積分規(guī)則


    聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表