Matlab 当矩阵元素是变量的时候,如何组合矩阵(急求!)
来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/08/19 11:18:49
Matlab 当矩阵元素是变量的时候,如何组合矩阵(急求!)
例如,我有一个矩阵:K1矩阵 a b c d是变量(syms a b c d;)
a b c d
a b c d
然后我建立一个新矩阵:
K=zeros(8,8);
之后我想把K1矩阵赋值到K矩阵中:
K(1:4,1:2)=K1(1:4,1:2);
之后就会出问题,无法赋值过去,
例如,我有一个矩阵:K1矩阵 a b c d是变量(syms a b c d;)
a b c d
a b c d
然后我建立一个新矩阵:
K=zeros(8,8);
之后我想把K1矩阵赋值到K矩阵中:
K(1:4,1:2)=K1(1:4,1:2);
之后就会出问题,无法赋值过去,
![Matlab 当矩阵元素是变量的时候,如何组合矩阵(急求!)](/uploads/image/z/4395376-64-6.jpg?t=Matlab+%E5%BD%93%E7%9F%A9%E9%98%B5%E5%85%83%E7%B4%A0%E6%98%AF%E5%8F%98%E9%87%8F%E7%9A%84%E6%97%B6%E5%80%99%2C%E5%A6%82%E4%BD%95%E7%BB%84%E5%90%88%E7%9F%A9%E9%98%B5%EF%BC%88%E6%80%A5%E6%B1%82%21%EF%BC%89)
2问题:
第一,k1是2*4的,所以k1(1:4,1:2)会出现超标,报错
第二,如果事先定义k=zeros(8,8),则k是double的,再用符号赋值,会报错
如果想赋值给k,也可以的:
clear all;clc;
syms a b c d
k1=[a b c d];
k1=repmat(k1,4,1);
k(1:4,1:2)=k1(1:4,1:2);
再问: 谢谢,当时提问打的比较匆忙,出错难免。我的意思就是把K1这个矩阵放到K这个8x8的大矩阵的左上角,但是因为数据问题就出错了。你的解释我大概能理解,就是这个repmat这个命令是什么意思不太懂。能稍微详细的解释下吗?谢谢了先~~~
再答: 这样的矩阵的赋值,在数值方法里是可以的,在符号里稍微不同 repmat命令就是按指定维上的数目铺放模块矩阵,形成更大的矩阵 repmat(k1,4,1);就是将看k1按照4行1列铺放,形成4行4列的矩阵 如果想显示8*8的矩阵,建议事先用符号定义一下,供参考: clear all;clc; syms a b c d e k1=[a b c d]; k1=[k1;k1]; k=[e];k=repmat(k,8,8); k(1:2,1:4)=k1(1:2,1:4);
再问: 首先非常感谢!我之所以需要把小矩阵弄到大矩阵里面是因为小矩阵里面有变量,而大矩阵里面其实是由数字矩阵和变量矩阵加起来的,比如: a a a a+4 5 6 7 8 a a a a+4 5 6 7 8 a a a a+4 5 6 7 8 a a a a+4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 差不多像这样一个大矩阵。最终结果是关于a的一个式子。就是不知道这样数字混合着变量能一起赋值给大K矩阵吗?
再答: 可以的,方法也较多,但关键是要把k转换为sym的 至于怎么赋值,看你的习惯了,先定义一个小矩阵k1也可以 直接赋值也行: clear all;clc; syms a k=1:8; k=repmat(k,8,1); k=sym(k); k(1:4,1:3)=a; k(1:4,4)=a+k(1:4,4);
第一,k1是2*4的,所以k1(1:4,1:2)会出现超标,报错
第二,如果事先定义k=zeros(8,8),则k是double的,再用符号赋值,会报错
如果想赋值给k,也可以的:
clear all;clc;
syms a b c d
k1=[a b c d];
k1=repmat(k1,4,1);
k(1:4,1:2)=k1(1:4,1:2);
再问: 谢谢,当时提问打的比较匆忙,出错难免。我的意思就是把K1这个矩阵放到K这个8x8的大矩阵的左上角,但是因为数据问题就出错了。你的解释我大概能理解,就是这个repmat这个命令是什么意思不太懂。能稍微详细的解释下吗?谢谢了先~~~
再答: 这样的矩阵的赋值,在数值方法里是可以的,在符号里稍微不同 repmat命令就是按指定维上的数目铺放模块矩阵,形成更大的矩阵 repmat(k1,4,1);就是将看k1按照4行1列铺放,形成4行4列的矩阵 如果想显示8*8的矩阵,建议事先用符号定义一下,供参考: clear all;clc; syms a b c d e k1=[a b c d]; k1=[k1;k1]; k=[e];k=repmat(k,8,8); k(1:2,1:4)=k1(1:2,1:4);
再问: 首先非常感谢!我之所以需要把小矩阵弄到大矩阵里面是因为小矩阵里面有变量,而大矩阵里面其实是由数字矩阵和变量矩阵加起来的,比如: a a a a+4 5 6 7 8 a a a a+4 5 6 7 8 a a a a+4 5 6 7 8 a a a a+4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 差不多像这样一个大矩阵。最终结果是关于a的一个式子。就是不知道这样数字混合着变量能一起赋值给大K矩阵吗?
再答: 可以的,方法也较多,但关键是要把k转换为sym的 至于怎么赋值,看你的习惯了,先定义一个小矩阵k1也可以 直接赋值也行: clear all;clc; syms a k=1:8; k=repmat(k,8,1); k=sym(k); k(1:4,1:3)=a; k(1:4,4)=a+k(1:4,4);