MATLAB:涉及矩阵的插值

MATLAB:涉及矩阵的插值,matlab,Matlab,我试图插值一个涉及矩阵的关系,但在设置它时,我遇到了一个错误 使用时出错。* 矩阵尺寸必须一致。 例如,让 A = [1 2;3 4]; I = [1 0;0 1]; ft = linspace(0, 5, 25); f = A.*ft + I.*ft.^2; %f is a matrix t = [0:0.1:1]; f = interp1(ft, f, t); 我在f=A.*ft+I.*ft.^2的行中遇到尺寸错误。我当然知道如何使用for循环绕过这个问题。但我不想做一个for循环。同样,

我试图插值一个涉及矩阵的关系,但在设置它时,我遇到了一个错误
使用时出错。*
矩阵尺寸必须一致。
例如,让

A = [1 2;3 4];
I = [1 0;0 1];
ft = linspace(0, 5, 25);
f = A.*ft + I.*ft.^2; %f is a matrix
t = [0:0.1:1];
f = interp1(ft, f, t);

我在
f=A.*ft+I.*ft.^2的行中遇到尺寸错误。我当然知道如何使用for循环绕过这个问题。但我不想做一个for循环。同样,在这种情况下,我不能做插值。如何解决这个问题?

错误是因为
A
的维度是
2x2
,而
ft
的维度是
1x25
。不能对两个维度不同的矩阵执行元素相乘
*

您使用的是标量乘法
*
,因此会出现错误,因为您尝试对大小不同的矩阵执行元素操作(对于
A
v1*25对于
ft

我想你真正想要的是并排设置(0*A,0.04*A,0.08*A,…,0.96*A,1*A)。如果是这样,你应该考虑使用一个简单的<代码> < <代码>循环,并逐步填充<代码> ft>代码>
如果您愿意不惜一切代价避免循环,也可以帮助您,让我知道这是如何实现的

我知道。但不完全是元素上的,我只想要标量乘法。我打算用矩阵乘以每次的标量。0*A,0.2083*A,0.4167*A。。。。我肯定能做到这一点。但是我不能执行插值。
repmat(A,[1,size(ft)]。*repmat(permute(ft,[1,3,2]),[size(A),1])
将为您提供
2x2x2x25
其中每个片段
I
都是
ft[I]*A
您到底想插值什么?在[12]和[34]之间,25分?或者你想要一张角为[1,2,3,4]的25*25地图?我试着用时间来插值
ft=linspace(0,5,25)
是我知道的
f
值的时间。我试图学习
f
代表
t=[0:0.1:1]。您希望
f
矩阵的大小是多少?@Steve 2 x 2为
A
。这是每个时间步的“
A
”。如果您有您需要的答案,请向上投票并接受一个,以便从“未答复”队列中删除此帖子。否则,您仍然可以编辑它以获得答案。谢谢。我认为对我们来说,做一些像
(0*a,0.04*a,0.08*a,…,0.96*a,1*a)这样的事情是很常见的。为什么没有一些方便的函数来实现这一点,而不是使用for循环呢?我有
[13]
A
。我想要一个更高维度的
[a2*a3*a]
列表。我不知道。我的回答对你有帮助吗?