![]() |
[求助]MATLAB中如何定义大量符号变量
少量的符号变量可以如下定义:
syms x1 x2 但是如果我要定义上百个符号变量呢? 请问如何定义简便 知道的麻烦告知 我的QQ是 346422821 谢谢:lovely: |
回复: [求助]MATLAB中如何定义大量符号变量
用eval
假如要生成x0....x100这一百个变量并将这一百个变量给定初值0 可以 for ii=0:100; eval(['x' num2str(ii) '=0']) end |
回复: [求助]MATLAB中如何定义大量符号变量
m=10;
n=5; for i=1:m for j=1:n A(i,j)=sym(['a',num2str(i),'_',num2str(j)]); end end [QUOTE=usagi06207;14854]少量的符号变量可以如下定义: syms x1 x2 但是如果我要定义上百个符号变量呢? 请问如何定义简便 知道的麻烦告知 我的QQ是 346422821 谢谢:lovely:[/QUOTE] |
回复: [求助]MATLAB中如何定义大量符号变量
把下面程序复制到m文件Array.m 中,并把Array.m文件放在当前路径下。
function A=Array(array_name,sz) %% 要生成 50×60 符号矩阵 只要使用命令如: %% A=Array('a',[50,60]); B=Array('b',[50,60]); 等等 %% 要生成 600 符号 只要使用命令如: %% V=Array('v',600); U=Array('v',600); 等等 if length(sz)==2 for it=1:sz(1) for jt=1:sz(2) A(it,jt)=sym([array_name,num2str(it),'_',num2str(jt)]); end end elseif length(sz)==1 for kt=1:sz(1) A(kt)=sym([array_name,num2str(kt)]); end else error('Demension of Arrary should be less then 3 '); end %% Bodhitreechen (Shanghai Maritime University) 2010 6 23 |
回复: [求助]MATLAB中如何定义大量符号变量
1 个附件
把下面程序复制到m文件[COLOR="darkorange"]取名为Array.m [/COLOR]中,并把Array.m文件放在当前路径下。
function A=Array(array_name,sz) %% 要生成 50×60 符号矩阵 只要使用命令如: %% A=Array('a',[50,60]); B=Array('b',[50,60]); 等等 %% 要生成 600 符号 只要使用命令如: %% V=Array('v',600); U=Array('u',600); 等等 %% 注意[COLOR="DarkOrange"]第一个输入变量必须是字符[/COLOR],第二个是要生成的符合矩阵或向量的 %% 规模 function [A,array_ustr,array_istr]=Array(array_name,sz) if ischar(array_name) array_name=lower(array_name); else error('It is expected that first input argument is a char array'); end if (length(sz)==2)&&(sz(1)~=1)&&(sz(2)~=1) for it=1:sz(1) for jt=1:sz(2) A(it,jt)=sym([array_name,num2str(it),'_',num2str(jt)]); end end elseif (length(sz)==1)||((length(sz)==2)&&(sz(1)==1))||((length(sz)==2)&&(sz(2)==1)) if length(sz)==1 for kt=1:sz(1) A(kt,1)=sym([array_name,num2str(kt)]); end elseif ((length(sz)==2)&&(sz(1)==1)) for kt=1:sz(2) A(1,kt)=sym([array_name,num2str(kt)]); end else for kt=1:sz(1) A(kt,1)=sym([array_name,num2str(kt)]); end end else error('Demension of Arrary should be less then 3 '); end if length(sz)==2 if (sz(1)>sz(2))&&(sz(2)==1) p=conj(A'); else p=A; end elseif length(sz)==1 p=conj(A'); end p_istr0=char(p); pre='matrix([['; newpre=''; post=']])'; newpost=''; p_istr=strrep(p_istr0,pre,newpre); p_istr=strrep(p_istr,post,newpost); p_ustr=strrep(p_istr,array_name,[array_name,'(']); p_ustr=strrep(p_ustr,',','),'); p_ustr=[p_ustr,')'];%% To make p_ustr in the form p(1),p(2),...,p(end), if arrary_name='p'. if length(sz)==2 if (sz(1)~=1)&&(sz(2)~=1) p_ustr=strrep(p_ustr,'_',','); p_ustr=strrep(p_ustr,[',',num2str(sz(2)),'),'],[',',num2str(sz(2)),')];[']); p_ustr=['[',p_ustr,']']; end end array_ustr=p_ustr; array_istr=p_istr; |
所有时间均为北京时间。现在的时间是 05:21。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.