Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2008-09-17, 20:14   #1
usagi06207
初级会员
 
注册日期: 2008-09-17
年龄: 40
帖子: 1
声望力: 0
usagi06207 正向着好的方向发展
默认 [求助]MATLAB中如何定义大量符号变量

少量的符号变量可以如下定义:
syms x1 x2
但是如果我要定义上百个符号变量呢?
请问如何定义简便
知道的麻烦告知
我的QQ是 346422821
谢谢:lovely:
usagi06207 当前离线   回复时引用此帖
旧 2008-12-05, 11:56   #2
debateshang
初级会员
 
注册日期: 2008-11-30
年龄: 40
帖子: 20
声望力: 17
debateshang 正向着好的方向发展
默认 回复: [求助]MATLAB中如何定义大量符号变量

用eval
假如要生成x0....x100这一百个变量并将这一百个变量给定初值0
可以

for ii=0:100;
eval(['x' num2str(ii) '=0'])
end
debateshang 当前离线   回复时引用此帖
旧 2010-06-23, 00:25   #3
未注册
游客
 
帖子: n/a
默认 回复: [求助]MATLAB中如何定义大量符号变量

m=10;
n=5;
for i=1:m
for j=1:n
A(i,j)=sym(['a',num2str(i),'_',num2str(j)]);
end
end










引用:
作者: usagi06207 查看帖子
少量的符号变量可以如下定义:
syms x1 x2
但是如果我要定义上百个符号变量呢?
请问如何定义简便
知道的麻烦告知
我的QQ是 346422821
谢谢:lovely:
  回复时引用此帖
旧 2010-06-23, 01:32   #4
未注册
游客
 
帖子: n/a
默认 回复: [求助]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
  回复时引用此帖
旧 2010-06-23, 19:58   #5
bodhitreechen
初级会员
 
注册日期: 2010-06-23
帖子: 3
声望力: 0
bodhitreechen 正向着好的方向发展
默认 回复: [求助]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('u',600); 等等
%% 注意第一个输入变量必须是字符,第二个是要生成的符合矩阵或向量的
%% 规模


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;
上传的附件
文件类型: rar Array.rar (641 字节, 3 次查看)

此帖于 2010-07-25 20:42 被 bodhitreechen 编辑。 原因: 有更新的m文件版本
bodhitreechen 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码


相似的主题
主题 主题作者 版面 回复 最后发表
[求助]请教matlab的输出格式问题 oliver6269 MATLAB论坛 2 2008-11-18 21:48
[求助]一个很简单的问题,可是就是不知道问题出在哪儿? pikky MATLAB论坛 6 2008-11-17 18:21
请教如何实现灰度图像的三维显示 linxudong MATLAB论坛 1 2008-11-16 15:56
Enhancing Multicore System Performance Using Parallel Computing with MATLAB TechnicalArticles MATLAB技术文章 0 2008-11-14 03:46
向大家请教两个问题!! whyhzj MATLAB论坛 0 2008-10-29 14:37


所有时间均为北京时间。现在的时间是 07:01


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.