24小时热门版块排行榜    

CyRhmU.jpeg
南方科技大学公共卫生及应急管理学院2025级博士研究生招生报考通知
查看: 2007  |  回复: 10

d-touch

木虫 (著名写手)

[求助] matlab里如何实现用向量赋值数组元素并且时数组实现运算?已有1人参与

譬如这样的数组:Z = [1,b;1,0],X= [1,0;c,1]其中b和c是维数相等的向量,如何把向量b和c赋值进Z、X,并且实现譬如Z*X的运算?
小白一个,望好心的大神们尽量讲简单点
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

acalephs

捐助贵宾 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
d-touch: 金币+5, 有帮助 2015-01-21 17:35:34
第一反应是重新写一个类,重新定义*。但记得好像有个函数可以,忘记了,我找找。。。
2楼2015-01-21 15:20:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

acalephs

捐助贵宾 (著名写手)

上次忘保存,找不到了。。。
说一下用新类的想法吧:
定义一个新类,建议用Z,X用{},新类继承cell。
重新定义方法mtimes,注意一下b c维度(例如3*2的时候注意用’再乘)
运算的时候用cell2mat把cell转换成内置mtimes能作用的矩阵。

暂时想到这些,
希望别人能有更好地想法。
3楼2015-01-21 16:20:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

acalephs

捐助贵宾 (著名写手)

引用回帖:
3楼: Originally posted by acalephs at 2015-01-21 16:20:09
上次忘保存,找不到了。。。
说一下用新类的想法吧:
定义一个新类,建议用Z,X用{},新类继承cell。
重新定义方法mtimes,注意一下b c维度(例如3*2的时候注意用’再乘)
运算的时候用cell2mat把cell转换成内置 ...

额,说错了,不能继承cell。。。不用继承试试。。
4楼2015-01-21 16:41:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

d-touch

木虫 (著名写手)

引用回帖:
4楼: Originally posted by acalephs at 2015-01-21 16:41:53
额,说错了,不能继承cell。。。不用继承试试。。...

谢谢您的回答。但是可能我说得不够清楚,我把具体问题给出来吧:
我有一个1000*1的向量f,如何把生成这样的矩阵T:
[1 f
0  1]
,这实际应该是一个三维矩阵。然后要实现以f为变量的同类2*2矩阵的运算,譬如:
[1 f(2)    *    [f(2)  f(2)
0  1    ]          1       1 ]
这样的运算?是否一定要用for循环依次计算?
5楼2015-01-21 17:35:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

acalephs

捐助贵宾 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
kabaisun: 应助指数+1 2015-01-22 08:12:16
d-touch: 金币+10, ★★★很有帮助 2015-01-22 11:36:59
d-touch: 金币+5, ★★★★★最佳答案 2015-01-23 09:02:33
引用回帖:
5楼: Originally posted by d-touch at 2015-01-21 17:35:29
谢谢您的回答。但是可能我说得不够清楚,我把具体问题给出来吧:
我有一个1000*1的向量f,如何把生成这样的矩阵T:

,这实际应该是一个三维矩阵。然后要实现以f为变量的同类2*2矩阵的运算,譬如:

这样的运 ...

额,这个问题是这样的,你的三维矩阵的定义并不明确,所以我无法编写相应的程序。
我的意思是你的*所表示的数学算法要清晰的给出来才能编写程序。
举一个例子,在matlab中
CODE:
.*

会被解释成times函数
CODE:
*

会被解释成mtimes函数

然后返回来看你的问题,我想了解的问题是:
[1 f
0  1]
你说这个矩阵实际是三维的,那么,按照matlab的定义也就是说是m×n×k维的,而你的f是1000×1,那么这样组合起来实际需要补全这个三维矩阵例如补全成2×2×1000,可以想象成竖立的摩天大楼。
[1 f(2)   
0  1    ] 从这个式子看出来你希望这个”大楼“的每层的(1,1),(2,1),(2,2)分别是1,0,1,位置(1,2)是f变量,然后这个三维矩阵的乘法对于每一层是2×2的2维矩阵,而你说的三维乘法对于每一层就是mtimes的含义,你所说的*是这样吗?

如果是,你可以这样想,把这个楼放倒,横着放,想象成4条钢筋,这样向量化变成,可以化成times的含义,然后计算每条的乘积,最后组合一下4条”钢筋“的运算结果。
6楼2015-01-21 21:48:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

d-touch

木虫 (著名写手)

引用回帖:
6楼: Originally posted by acalephs at 2015-01-21 21:48:16
额,这个问题是这样的,你的三维矩阵的定义并不明确,所以我无法编写相应的程序。
我的意思是你的*所表示的数学算法要清晰的给出来才能编写程序。
举一个例子,在matlab中
.* 会被解释成times函数
* 会被解释成 ...

您讲得太形象了,我就是这个意思,就是要数栋“大楼”层数相等的每层进行矩形运算,最后结果还是2X2X1000的矩阵。您的意思是用向量化的方法,分别计算三维矩阵的4根“钢筋”,最后再生成2*1000*2的矩阵吗?
7楼2015-01-22 11:37:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

acalephs

捐助贵宾 (著名写手)

引用回帖:
7楼: Originally posted by d-touch at 2015-01-22 11:37:14
您讲得太形象了,我就是这个意思,就是要数栋“大楼”层数相等的每层进行矩形运算,最后结果还是2X2X1000的矩阵。您的意思是用向量化的方法,分别计算三维矩阵的4根“钢筋”,最后再生成2*1000*2的矩阵吗?...

8楼2015-01-22 15:59:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

d-touch

木虫 (著名写手)

谢谢您提供的思路!
9楼2015-01-23 09:02:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

beckzx

新虫 (初入文坛)

用cell试试?不清楚你的具体问题。可以不用for。设矩阵F为矩阵A中的一个元素。如,A=cell(3,3);A{2,2}=F;则F中元素F(i,j)=A{2,2}(i,j);这样就可以直接矩阵相乘了。
10楼2015-01-25 15:46:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 d-touch 的主题更新
信息提示
请填处理意见