声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4667|回复: 16

[编程技巧] 如何给把矩阵的值赋值

[复制链接]
发表于 2010-8-9 10:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我在编程的时候总是出现以下错误,
U=T(1):1:H(1)
U =
  Columns 1 through 18
    34    35    36    37    38    39    40    41    42    43    44    45    46    47    48    49    50    51
  Columns 19 through 31
    52    53    54    55    56    57    58    59    60    61    62    63    64
但是我想赋值给这样一个矩阵一行31列的矩阵,就是我下面的这行语句,但是运行的时候就出现了错误!
U(1,31)=T(1):1:H(1)
??? Subscripted assignment dimension mismatch.
请大家帮帮忙,是不是我定义错了!
===============================================
我想实现下面的语句
for i=1:372
     A(i)=T(i):1:H(i);
     end

[ 本帖最后由 jinfengshi_2005 于 2010-8-9 10:36 编辑 ]
回复
分享到:

使用道具 举报

发表于 2010-8-9 11:14 | 显示全部楼层

回复 楼主 jinfengshi_2005 的帖子

31列数据本就不能赋值给一个element!
个人水平专业有限, 建议楼主说清楚些! LZ要什麽?:@)
 楼主| 发表于 2010-8-9 11:57 | 显示全部楼层
不好意思,总共有372个数组,有的数组是31列,有的是40列,列数都不一样,但是行数是一样的,都是一行,我想定义372个矩阵,一个矩阵对应于一个数组,而这372个数组,每个数组的长度我也求好了,放在一个数组里面,我定义为Ft(i)=H(i)-T(i)+1,
所以当时我想这样编这个程序
===========================
for i=1:372
     U(1,Ft(i))=T(i):1:H(i);
    end
但是现在发现错了,不知道怎么编了,求楼主帮帮忙!
不知道我这样讲,清楚了没有!

[ 本帖最后由 jinfengshi_2005 于 2010-8-9 12:04 编辑 ]
发表于 2010-8-9 12:31 | 显示全部楼层

回复 板凳 jinfengshi_2005 的帖子

???
for i=1:372
     U=T(i):1:H(i);
end
 楼主| 发表于 2010-8-9 12:59 | 显示全部楼层

回复 地板 ChaChing 的帖子

不对啊,你这样只是把第372个的数组赋值给U啊!我要的是总共有372个数组都要啊!
chaching,还在吗?帮帮忙呢。

[ 本帖最后由 ChaChing 于 2010-8-9 15:36 编辑 ]
发表于 2010-8-9 15:36 | 显示全部楼层
不确定LZ要的, 是这个吗?
http://forum.vibunion.com/forum/ ... 8&goto=lastpost
 楼主| 发表于 2010-8-9 16:13 | 显示全部楼层
for i=1:372, s = ['U', '=','T(i):1:H(i),'], eval(s); end,
刚刚我仿照你的编了一下,好像不行么,输出来的还试第372个的数组,不好意思,麻烦你了!再次感谢!
===================================================================================
for i=1:372, s = ['U', int2str(i), 'T(i):1:H(i)'], eval(s); end
s =
U1T(i):1:H(i)
??? Error using ==> eval
Undefined command/function 'U1T'.
刚刚我又修改了一下,出现如下的错误!!

[ 本帖最后由 jinfengshi_2005 于 2010-8-9 16:36 编辑 ]
 楼主| 发表于 2010-8-9 16:44 | 显示全部楼层
for n = 1:372
magic_str = ['M', int2str(n),' = T(n):1:H(n)'];
eval(magic_str);
end
======================================
终于搞好了,多谢楼主!

评分

1

查看全部评分

发表于 2010-8-9 20:30 | 显示全部楼层
什么事都需细心不心急!
根据提示, 相信有能力完成的:loveliness:
 楼主| 发表于 2010-8-10 12:54 | 显示全部楼层
但是我觉得还是有一个问题,就是如果有个矩阵式是3行4列的,A(3,4), 然后想动态的分配给矩阵值,我简单的用下面的一个语句(这个语句只是个示意,并不正确)表达我的意思,但是不知道用Matlab怎么实现。能否帮忙一下!非常感谢!
++++++++++++++++++++++++++++++++++
for i=1:3
    for j=1:4
   A(i,j)=p(i)+h(j)
  end
  end
+++++++++++++++++++++++++++++++++++
发表于 2010-8-10 13:44 | 显示全部楼层

回复 10楼 jinfengshi_2005 的帖子

nRow=3; nCol=4;
for n = 1:nRow*nCol, s = [nRow,nCol]; [i,j]=ind2sub(s,n);
   magic_str = ['M', int2str(n),' = p(i)+h(j)']; eval(magic_str);
end
 楼主| 发表于 2010-8-10 13:51 | 显示全部楼层
好的,非常感谢,我试试!
 楼主| 发表于 2010-8-10 14:26 | 显示全部楼层
我刚刚稍微改了一下,用你的方法运行了一下,发现还是不是我想要的结果!
nRow=3;nCol=4;
for n=1:nRow*nCol,s=[nRow,nCol];[i,j]=ind2sub(s,n);
   magic_str=['M',int2str(n),'=i+j'];eval(magic_str);
   end
========================================
因为我想要的结果是输出一个矩阵A,不是A1,A2....An的,现在我想实现这种功能
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
j=1;i=1;
while f(j)<F(i)&j<19981
         p(j)=4*F(i)/ERBN(i)-(0.0117*4*F(i)/ERBN(i))*(20-51)
if abs(f(j)-F(i))/F(i)<=1
   g(j)=abs(f(j)-F(i))/F(i);
   else g(j)=1;
end
j=j+1;
end
for k=j:19981
     p(k)=4*F(i)/ERBN(i);
if abs(f(k)-F(i))/F(i)<=4
   g(k)=abs(f(k)-F(i))/F(i);
   else g(k)=4;
end
end
=================================================
上面是我编的一个程序,其中是i=1的时候,而i是要从1到372中情况,而我现在想运行程序后能否得出矩阵p(372x19981)和g(372x19981),现在p和g都是1行19981列,所以现在就碰到这样一个难题了!chaching:你能帮我看看嘛,可能我写的有些乱,不好意思!
===================================================================================
我想表达的意思,下面我用程序改了一下!
for i=1:372
j=1;
while f(j)<F(i)&j<19981
         p(i,j)=4*F(i)/ERBN(i)-(0.0117*4*F(i)/ERBN(i))*(20-51)
if abs(f(j)-F(i))/F(i)<=1
   g(i,j)=abs(f(j)-F(i))/F(i);
   else g(i,j)=1;
end
j=j+1;
end
for k=j:19981
     p(i,k)=4*F(i)/ERBN(i);
if abs(f(k)-F(i))/F(i)<=4
   g(i,k)=abs(f(k)-F(i))/F(i);
   else g(i,k)=4;
end
end
===========================================================

[ 本帖最后由 jinfengshi_2005 于 2010-8-10 15:08 编辑 ]
发表于 2010-8-10 16:12 | 显示全部楼层
抱歉没看清10F的问题!?
个人水平专业有限, 不能短时间看清LZ的问题! :@L
LZ是要使用2维matrix吗?
建议直接说说LZ原来的题目或问题, 或许容易了解些!
 楼主| 发表于 2010-8-10 16:39 | 显示全部楼层

回复 14楼 ChaChing 的帖子

是的,我想要二维的矩阵
好的,到时我把原来的题目整理出来之后,发出来,然后你再看看!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-6 15:14 , Processed in 0.109312 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表