如何用matlab编程使用ts算法实现tsd问题 matlab这是OFDM的时域和频域的子载波图形,请问这怎么...

\u600e\u4e48\u5c06\u4e00\u7ec4\u6570\u636e\u5f52\u4e00\u5316\u5230\uff080\uff0c1\uff09\u4e4b\u95f4\uff0c\u7528matlab\u7f16\u7a0b

\u6309\u8fd9\u6837\u7684\u683c\u5f0f\u63d0\u4f9b\u53c2\u6570:
\u5c06\u8fd9\u7ec4\u6570\u636e\u7c98\u8d34\u5230matlab\u7f16\u7a0b\u9875\u9762\uff1b
\u5728\u9875\u9762\u4e2d\u8f93\u5165MappedData = mapminmax(OriginalData, 0, 1)\uff1b
\u6309\u56de\u8f66\u952e\u3002
\u4e00\u3001\u300aMATLAB\u7f16\u7a0b\u300b\uff1a
\u662f2007\u5e74\u79d1\u5b66\u51fa\u7248\u793e\u51fa\u7248\u7684\u56fe\u4e66\uff1b
\u4f5c\u8005\u662f\u67e5\u666e\u66fc(StephenJ.Chapman)\u3002
\u4e8c\u3001\u5185\u5bb9\u7b80\u4ecb\uff1a
\u672c\u4e66\u4e3a\u56fd\u5916\u9ad8\u6821\u7535\u5b50\u4fe1\u606f\u7c7b\u4f18\u79c0\u6559\u6750(\u82f1\u6587\u5f71\u5370\u7248)\u4e4b\u4e00\uff1b
\u672c\u4e66\u8be6\u7ec6\u8bb2\u8ff0\u4e86\u5982\u4f55\u7528MATLAB\u8fdb\u884c\u7a0b\u5e8f\u8bbe\u8ba1\uff0c\u5982\u4f55\u7f16\u5199\u6e05\u695a\u3001\u9ad8\u6548\u7684\u7a0b\u5e8f\uff1b
\u4e66\u4e2d\u5f3a\u8c03\u4e86\u81ea\u4e0a\u800c\u4e0b\u7684\u7a0b\u5e8f\u8bbe\u8ba1\u65b9\u6cd5\u3001\u51fd\u6570\u7684\u4f7f\u7528\u3001MATLAB\u5185\u90e8\u5de5\u5177\u7684\u4f7f\u7528\u548c\u6570\u636e\u7ed3\u6784\uff0c\u5e76\u6307\u51fa\u4e86\u4e00\u4e9b\u4f7f\u7528\u6280\u5de7\u548c\u7f16\u7a0b\u8005\u5e38\u72af\u7684\u9519\u8bef\uff1b
\u4e66\u53ef\u4f5c\u4e3a\u5de5\u79d1\u5404\u4e13\u4e1a\u672c\u79d1\u751f\u7684\u6559\u5b66\u8f85\u5bfc\u4e66\uff0c\u4e5f\u53ef\u4f5c\u4e3a\u5de5\u7a0b\u6280\u672f\u4eba\u5458\u7684\u53c2\u8003\u4e66\u3002


% ofdm spectrum plot


clear all;
close all;
clc;
Num_Sc = 12; % 13 subcarriers
Ts = 1; % 1s
F_space = 1/Ts;
F = -F_space*Num_Sc/2-4:0.001:F_space*Num_Sc/2+4;


F_spectrum = zeros(Num_Sc,length(F));


for i = -Num_Sc/2:1:Num_Sc/2
F_spectrum(i+Num_Sc/2+1,1:end) = sin(2*pi*(F-i*F_space).*Ts/2)./(2*pi*(F-i*F_space).*Ts/2);
end


plot(F,F_spectrum)
grid on



% ofdm subcarrier plot


clear all;
close all;
clc;


N = 256;
M = 6;
N_symbol = 1;
% s_data = [-3-sqrt(-1)*3 -3-sqrt(-1) -3-sqrt(1) -3-sqrt(-1)*3]/sqrt(10);
s_data = (1+sqrt(-1))/sqrt(2);
tx_data = repmat(s_data,1,N); % some initial phase
% Original_bin = randint(2,N*N_symbol,2,222);
% Modobj = modem.qammod('M',4,'SymbolOrder','Gray','InputType','Bit');
% tx_data = modulate(Modobj,Original_bin)/sqrt(10);


for j = 0:1:N_symbol-1


for k =0:1:N-1
for n = 0:1:N-1
x_tmp(k+1,n+1+j*N) = tx_data(k+1+j*N)*exp(sqrt(-1)*2*pi*k*n/N);
end
end


end


% plot four-subcarrier
figure(1)
plot(real(x_tmp(1:4,1:end).'))



在matlab的workspace里打editsfuntmpl(这是matlab自己提供的s函数模板),我们看它来具体分析s函数的结构。它的第一行是这样的:function[sys,x0,str,ts]=sfuntmpl(t,x,u,flag)先讲输入与输出变量的含义:t是采样时间,x是状态变量,u是输入(是做成simulink模块的输入),flag是仿真过程中的状态标志(以它来判断当前是初始化还是运行等);sys输出根据flag的不同而不同(下面将结合flag来讲sys的含义),x0是状态变量的初始值,str是保留参数(mathworks公司还没想好该怎么用它,嘻嘻,一般在初始化中将它置空就可以了,str=[]),ts是一个1×2的向量,ts(1)是采样周期,ts(2)是偏移量。下面结合sfuntmpl.m中的代码来讲具体的结构:switchflag,%判断flag,看当前处于哪个状态case0,[sys,x0,str,ts]=mdlInitializeSizes;flag=0表示处于初始化状态,此时用函数mdlInitializeSizes进行初始化,此函数在sfuntmpl.m的149行我们找到他,在初始化状态下,sys是一个结构体,用它来设置模块的一些参数,各个参数详细说明如下size=simsizes;%用于设置模块参数的结构体用simsizes来生成sizes.NumContStates=0;%模块连续状态变量的个数sizes.NumDiscStates=0;%模块离散状态变量的个数sizes.NumOutputs=0;%模块输出变量的个数sizes.NumInputs=0;%模块输入变量的个数sizes.DirFeedthrough=1;%模块是否存在直接贯通(直接贯通我的理解是输入能%直接控制输出)sizes.NumSampleTimes=1;%模块的采样时间个数,至少是一个sys=simsizes(sizes);%设置完后赋给sys输出举个例子,考虑如下模型:dx/dt=fc(t,x,u)也可以用连续状态方程描述:dx/dt=A*x+B*ux(k+1)=fd(t,x,u)也可以用离散状态方程描述:x(k+1)=H*x(k)+G*u(k)y=fo(t,x,u)也可以用输出状态方程描述:y=C*x+D*u设上述模型连续状态变量、离散状态变量、输入变量、输出变量均为1个,我们就只需改上面那一段代码为:(一般连续状态与离散状态不会一块用,我这儿是为了方便说明)sizes.NumContStates=1;sizes.NumDiscStates=1;sizes.NumOutputs=1;sizes.NumInputs=1;其他的可以不变。继续在mdlInitializeSizes函数中往下看:x0=[];%状态变量设置为空,表示没有状态变量,以我们上面的假设,可改%为x0=[0,0](离散和连续的状态变量我们都设它初值为0)str=[];%这个就不用说了,保留参数嘛,置[]就可以了,反正没什么用,可%能7.0会给它一些意义ts=[00];%采样周期设为0表示是连续系统,如果是离散系统在下面的mdlGet%TimeOfNextVarHit函数中具体介绍嘻嘻,总算讲完了初始化,后面的应该快了在sfuntmpl的106行继续往下看:case1,sys=mdlDerivatives(t,x,u);flag=1表示此时要计算连续状态的微分,即上面提到的dx/dt=fc(t,x,u)中的dx/dt,找到mdlDerivatives函数(在193行)如果设置连续状态变量个数为0,此处只需sys=[];就可以了(如sfuntmpl中一样),按我们上述讨论的那个模型,此处改成sys=fc(t,x(1),u)或sys=A*x(1)+B*u%我们这儿x(1)是连续状态变量,而x(2)是离散的,这儿只用到连续的,此时的输出sys就是微分继续,在sfuntmpl的112行:case2,sys=mdlUpdate(t,x,u);flag=2表示此时要计算下一个离散状态,即上面提到的x(k+1)=fd(t,x,u),找到mdlUpdate函数(在206行)它这儿sys=[];表示没有离散状态,我们这而可以改成sys=fd(t,x(2),u)或sys=H*x(2)+G*u;%sys即为x(k+1)看来后面几个一两句话就可了,呵呵,在sfuntmpl的118行case3,sys=mdlOutputs(t,x,u);flag=3表示此时要计算输出,即y=fo(t,x,u),找到mdlOutputs函数(在218行),如上,如果sys=[]表示没有输出,我们改成sys=fo(t,x,u)或sys=C*x+D*u%sys此时为输出y好像快完了,嘻嘻,在sfuntmpl的124行case4,sys=mdlGetTimeOfNextVarHit(t,x,u);flag=4表示此时要计算下一次采样的时间,只在离散采样系统中有用(即上文的mdlInitializeSizes中提到的ts设置ts(1)不为0)连续系统中只需在mdlGetTimeOfNextVarHit函数中写上sys=[];这个函数主要用于变步长的设置,具体实现大家可以用editvsfunc看vsfunc.m这个例子最后一个,在sfuntmpl的130行case9,sys=mdlTerminate(t,x,u);flag=9表示此时系统要结束,一般来说写上在mdlTerminate函数中写上sys=[]就可,如果你在结束时还要设置什么,就在此函数中写关于sfuntmpl这个s函数的模板讲完了。s函数还可以带用户参数,下面给个例子,和simulink下的gain模块功能一样,大伙自己看吧,我睡觉去了,累了function[sys,x0,str,ts]=sfungain(t,x,u,flag,gain)switchflag,case0,sizes=simsizes;sizes.NumContStates=0;sizes.NumDiscStates=0;sizes.NumOutputs=1;sizes.NumInputs=1;sizes.DirFeedthrough=1;sizes.NumSampleTimes=1;sys=simsizes(sizes);x0=[];str=[];ts=[0,0];case3,sys=gain*u;case{1,2,4,9},sys=[];end

  • 濡備綍鐢╩atlab缂栫▼浣跨敤ts绠楁硶瀹炵幇tsd闂
    绛旓細鍦matlab鐨workspace閲屾墦editsfuntmpl(杩欐槸matlab鑷繁鎻愪緵鐨剆鍑芥暟妯℃澘)锛屾垜浠湅瀹冩潵鍏蜂綋鍒嗘瀽s鍑芥暟鐨勭粨鏋勩傚畠鐨勭涓琛屾槸杩欐牱鐨勶細function[sys,x0,str,ts]=sfuntmpl(t,x,u,flag)鍏堣杈撳叆涓庤緭鍑哄彉閲忕殑鍚箟锛歵鏄噰鏍锋椂闂达紝x鏄姸鎬佸彉閲忥紝u鏄緭鍏ワ紙鏄仛鎴恠imulink妯″潡鐨勮緭鍏ワ級,flag鏄豢鐪熻繃绋嬩腑鐨勭姸鎬佹爣蹇楋紙...
  • matlab姹傝皟鑺傛椂闂ts
    绛旓細matlab姹傝皟鑺傛椂闂ts鍙〃绀轰负(鐢变簬鏈寚瀹氭棩鏈,鎵浠MATLAB浼氱粰璇ユ椂闂翠竴涓粯璁ょ殑鏃ユ湡) date = 7.3852e+05 杩欑琛ㄧず鏂规硶鐨勫ソ澶勬槸鍙互鐢ㄦ潵杩涜鏃堕棿璁$畻銆
  • 鍦matlab涓殑simulink涓濡備綍瀹炵幇1+ts
    绛旓細濡傛灉閫夌敤鍥哄畾姝ラ暱寰楄瘽ts鏄釜甯告暟锛1锛媡s鍙互鐩存帴鐪嬩綔鏄竴涓暟寰 锛屽鏋滄槸鍙樻闀垮緱璇濆彲浠鐢涓涓猼ime src鍚庨潰鍔犱釜绉垎鍧楋紝鍦ㄨ繛鎺1锛峑^-1妯″潡浣滄煡鍒嗗悗闈㈢疮鍔犲櫒鍔1鍗冲彲銆傚彲鑳戒綘鎯宠寰椾笉鏄繖涓粨鏋滃惂
  • matlab涓璽smovavg鐨勫叿浣鐢ㄦ硶
    绛旓細matlab涓璽smovavg鐨勫叿浣鐢ㄦ硶 鏍煎紡濡備笅锛歰utput = tsmovavg(tsobj, 's', lag) (Simple)output = tsmovavg(tsobj, 'e', timeperiod) (Exponential)output = tsmovavg(tsobj, 't', numperiod) (Triangular)output = tsmovavg(tsobj, 'w', weights) (Weighted)output = tsmovavg(tsobj...
  • 銆Matlab銆慚atlab涓濡備綍缂栧啓S鍑芥暟
    绛旓細flag=4琛ㄧず姝ゆ椂瑕佽绠椾笅涓娆¢噰鏍风殑鏃堕棿锛屽彧鍦ㄧ鏁i噰鏍风郴缁熶腑鏈鐢(鍗充笂鏂囩殑mdlInit ializeSizes涓彁鍒扮殑ts璁剧疆ts(1)涓嶄负0)杩炵画绯荤粺涓彧闇鍦╩dlGetTimeOfNextVarHit鍑芥暟涓啓涓妔ys=[];杩欎釜鍑芥暟涓昏鐢ㄤ簬鍙樻闀跨殑璁剧疆锛屽叿浣撳疄鐜板ぇ瀹跺彲浠ョ敤edit vsfunc鐪媣sfunc.m杩欎釜渚嬪瓙鏈鍚庝竴涓紝鍦╯funtmpl鐨130琛宑ase ...
  • matlab閲岄潰Ts=1e-3浠涔堟剰鎬
    绛旓細>> Ts=1e-3 Ts = 1.0000e-003 >> Ts==0.001 % 姣旇緝鍒ゆ柇 ans = 1 % 1涓虹湡锛屽嵆涓よ呯浉绛 鍦matlab涓瘯涓涓嬶紝Ts灏辨槸0.001锛1e-3鏄寚10鐨-3娆℃柟锛
  • matlab 鎬庢牱璁剧疆鏃堕棿杞
    绛旓細1棣栧厛鏄噯澶囧ソ瑙勫垯鏁版嵁銆傚鏋滄暟鎹牸寮忔槸matlab澶勭悊鍜屽瓨鍌ㄧ殑鐭╅樀鏍煎紡锛浣跨敤MATLAB鍒欓渶瑕佹彁鍙栧嚭鏉ユ椂闂村簭鍒楋紝骞朵繚瀛樹负ASCII鏍煎紡鏁版嵁銆傛敞鎰忔鏃剁殑鏁版嵁涓嶅甫鏈夋椂闂翠俊鎭紝鍙槸绠鍗曠殑涓鍒楁暟鎹屽凡锛屾垜浠皢鍦ㄥ湪鍚庨潰娣诲姞鏃堕棿淇℃伅銆2涓簊igma0鏁版嵁娣诲姞鏃堕棿鍒梉h2]杩欎釜鏂规硶涓嶆槸鍥哄畾鐨勶紝鍙互鑷繁缂栫▼瀹炵幇锛屼篃鍙互浣跨敤宸叉湁鐨勭畝鍗...
  • MATLAB涓ts=0.1;%%0.001浠涔堟剰鎬
    绛旓細鐚滄兂鏄繖鏍凤細灏嗗父鏁0.1璧嬬粰鍙橀噺ts锛岀櫨鍒嗗彿鍚庨潰鏄敞閲婏紝鎰忔濇槸杩欎釜0.1鐨勫崟浣嶆槸鐧惧垎涔嬩竴锛屽疄闄呬唬琛ㄦ暟鍊0.001.
  • matlab涓亣鍒伴棶棰,sinc(ts(:,ones(size(t))) 涓嶇悊瑙,ts鎷彿閲岄潰鎬庝箞瑙i噴...
    绛旓細璇达紝鐢sinc鍑芥暟涓庨噰鏍峰仛鍗风Н鏉ラ噸寤轰俊鍙枫備唬鐮佸涓嬶細t=(1:10)';randn('state',0);x=randn(size(t));ts=linspace(-5,15,600)';a=ts(:,ones(size(t)));b=t(:,ones(size(ts)));y=sinc(ts(:,ones(size(t)))-t(:,ones(size(ts)))')*x;plot(t,x,'o',ts,y);y=sinc(ts...
  • 鍒氭帴瑙imulink,鍋氫豢鐪熸椂閬囧埌鏈変竴涓ā鍧楁槸Ts,杩欎釜鍦ㄥ摢鍎挎壘
    绛旓細濡傛灉浣跨敤Simulink瀹炵幇锛屽乏杈圭殑涓夎妗1/sT搴旇浣跨敤浼犻掑嚱鏁帮紙Transfer Fcn锛夋ā鍧楀疄鐜帮紝浣嗘槸鍏蜂綋琛ㄧ幇椋庢牸涓婁細鏈夋墍涓嶅悓锛屼緥濡傦紝浼犲嚱浼氭垚涓1/Ts銆傝屽彸杈圭殑妯″潡鍦⊿imulink閲岄潰鏄棤娉曠洿鎺ュ疄鐜扮殑锛屽洜涓篠imulink涓嶆敮鎸佷紶鍑藉垎瀛愰樁娆¢珮浜庡垎姣嶃傚彉閫氱殑鍋氭硶鏄娇鐢ㄥ鏁版ā鍧梔u/dt涓嶨ain妯″潡涓茶仈锛屾垨鑰呭鏂规鍥捐繘琛岀瓑鏁堝彉鎹傜洰...
  • 扩展阅读:利用matlab制作gui界面 ... matlab编程步骤和过程 ... matlab编程题题库 ... matlab使用步骤 ... matlab基本编程步骤 ... matlab编程如何使用ode45 ... matlab新手使用教程 ... matlab编写软件界面 ... matlab的基本使用方法 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网