Matlab 计算三维矩阵

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matlab 计算三维矩阵相关的知识,希望对你有一定的参考价值。

有 X Y Z 三个变量
X 为 1,2, 3
Y 为 4,8, 12
5,10,15
6,12,18
Z 为 4,5, 6

求一个公式,已知 X 和 Y 求 Z 的对应关系
就是说当X=1,Y=4 --> Z=4;
当X=1,Y=5 --> Z=5;
当X=2,Y=8 --> Z=4;
当X=3,Y=18 --> Z=6;
当X=3,Y=15 --> Z=5;
要求这样一个关系式应该怎么做???
有那位大哥知道,先谢谢了
我是要通过这组数据得到 z = y/x 这个方程
这个方程现在是未知的~~~

假设X有一行g列,Y有m行n列。则Z的维数可表示为(g,m,n)。
Z=[];
X=[1,2, 3];Y=[4,8, 12;5,10,15;6,12,18 ];
for i=1:g
for j=1:m
for k=1:n
Z(i,j,k)=x(i)*Y(j,k);
end
end
end
你说的再清楚些好吗?你不就是要求Z么?必须写成表达式?
参考技术A X*Z=Y就是,即 Z=Y/X
找对应关系就行
参考技术B 有所了解,但是还没有真正用过,所以我也不会!你另请高明吧!
不好意思!
参考技术C x=[1,2,3]
y=[4,8,12;5,10,15;6,12,18]
z=[4,5,6]
y1=x'*z

x =

1 2 3

y =

4 8 12
5 10 15
6 12 18

z =

4 5 6

y1 =

4 5 6
8 10 12
12 15 18

数据表明。另外可以做图像发现。
x=[1,2,3]
y=[4,8,12;5,10,15;6,12,18]
z=[4,5,6]
plot3(x,y,z)
得到3条直线。

[x, y] = meshgrid(0.01:0.01:1);
mesh(x,y,y./x)
hold on
grid
hold off
得到一个平面

发现那3条直线都在这个平面上

matlab 如何把三维矩阵拼接

比方说tirbe1和tribe2都是三维矩阵且tribe1是48*3*50的三维矩阵而tribe2是48*3*20的三维矩阵,如何将这两个矩阵平拼接成为48*3*70的三维矩阵?

1、首先,定义A和B两个2*2的矩阵。cat(维度,A,B)可以按照给定方向拼接矩阵。如图使用cat(1,A,B)把这两个矩阵竖着连起来。使用cat(2,A,B)把这两个矩阵横着连起来。

2、C=cat(3,A,B)把两个矩阵摞成一个三维数组,如图。

3、使用cat要注意,在拼接方向上的宽度要一致才可拼接。

4、如图,2*2的矩阵和2*3的矩阵在方向2上(水平方向)可以用cat拼接。

5、使用Horzcat可以水平连接矩阵,使用vertcat可以垂直连接矩阵,相当于cat的专用版本。

参考技术A

1、首先在我们的电脑上打开matlab,在命令行窗口中输入a=[1,2,3;4,5,6];b=[7,8,9],按回车键,生成两个同列不同行的矩阵。

2、对于同列不同行的两个矩阵,我们可以通过c=[a;b],进行拼接矩阵,分号是纵向拼接矩阵。

3、我们在命令行窗口中输入a=[1,2,3;4,5,6];d=[1;10],按回车键生成两个同行数不同列数的矩阵。

4、对于同行数不同列数的两个矩阵,可以通过c=[a,d],进行拼接矩阵,其中逗号的意思是横向拼接矩阵。

5、我们也可以使用空格来横向拼接矩阵,输入c=[a d],按回车键和逗号拼接是一样的效果。

6、如果我们想拼接多个矩阵,只要保证各个矩阵列数或者行数相同,就可以可以通过分号或者逗号进行拼接。

参考技术B 用细胞数组,t=tribe1,tribe2可以勉强接着一起,不过可能没你想要的效果。那就只有用循环的:
t=zeros(48,3,70);
tribe1=ones(48,3,50);%输入你自己的tribe1,tribe2
tribe2=rand(48,3,20);
for i=1:70
if i<=50
t(:,:,i)=tribe1(:,:,i);
else t(:,:,i)=tribe2(:,:,i-50);
end
end
如果像上面拼接的情况很多的话,你可以考虑上面的做成函数,祝你好运!
晕,发现自己的答案好差。
参考技术C cat (3, A, B)
当A,B分别为二维矩阵时,合并之后为三维矩阵;
A,B为三维矩阵,则在第三维的方向上合并A,B。(这才是人家问的问题的部分答案)
另外,需要注意的是:两个三维矩阵的合并方式有三种,cat只能在第三维的方向上合并,而不能在第一维或第二维的方向上合并
希望被采纳的答案是可以在第一维或第二维或第三维的任意一个方向上都能合并的代码,那段代码才是这个问题的完整正解
参考技术D f=zeros(48,3,70);
f(:,:,1:50)=tribe1;
f(:,:,51:end)=tribe2;本回答被提问者采纳

以上是关于Matlab 计算三维矩阵的主要内容,如果未能解决你的问题,请参考以下文章

matlab怎么用三维矩阵画三维图

matlab 如何把三维矩阵拼接

如何用MATLAB生成分类用的二维模拟数据

matlab矩阵的三维可视化问题

matlab 如何把cell转为三维矩阵

在 MATLAB 中找到三维矩阵中的有符号最小值