Matlab中的扩展向量
我有一个简单的疑问,我想在Matlab中扩展一个向量:Matlab中的扩展向量,matlab,vector,extend,Matlab,Vector,Extend,我有一个简单的疑问,我想在Matlab中扩展一个向量: a = [1 2 3 4 n]; 以以下方式: b = [1 1.5 2 2.5 3 3.5 4 ... n]; 这意味着,创建一个新向量,其大小是前一个向量的两倍,但新添加的值必须是前一个数和下一个数的平均值 有没有想到一个循环来解决这个问题?一个可能的解决方案 b(1:2:2*numel(a)-1)=a b(2:2:end) = a(1:end-1)+diff(a)/2 可能的解决办法 b(1:2:2*numel(a)-1)=a
a = [1 2 3 4 n];
以以下方式:
b = [1 1.5 2 2.5 3 3.5 4 ... n];
这意味着,创建一个新向量,其大小是前一个向量的两倍,但新添加的值必须是前一个数和下一个数的平均值
有没有想到一个循环来解决这个问题?一个可能的解决方案
b(1:2:2*numel(a)-1)=a
b(2:2:end) = a(1:end-1)+diff(a)/2
可能的解决办法
b(1:2:2*numel(a)-1)=a
b(2:2:end) = a(1:end-1)+diff(a)/2
没有任何订单上的假设
a = [1 2 5 9 17];
d=[diff(a),0]
a2=[a;a+d/2]
b=a2(1:end-1)
没有任何订单上的假设
a = [1 2 5 9 17];
d=[diff(a),0]
a2=[a;a+d/2]
b=a2(1:end-1)
可以使用线性插值(
interp1
)来解决此问题。使用a
向量,我们可以在每个元素处和元素之间插入值
a = [1 2 3 4 17];
b = interp1(a, linspace(1, numel(a), numel(a) * 2 - 1), 'linear');
% 1 1.5 2 2.5 3 3.5 4 10.5 17
解释
这是假设你有一个函数
f(x)
,其中x=[1 2 3 4 5]
和f(x)=a
。您最终想要的是f(x)
的值,其中x=[1.5 2.5 3 3.5 4 4.5]
(即值和值之间的值。如果我们使用'linear'
选项,则中间的值将替换为其相邻值的平均值。您可以使用线性插值(interp1
)为了解决这个问题,使用a
向量,我们可以在每个元素处和元素之间插入值
a = [1 2 3 4 17];
b = interp1(a, linspace(1, numel(a), numel(a) * 2 - 1), 'linear');
% 1 1.5 2 2.5 3 3.5 4 10.5 17
解释
这是假设你有一个函数f(x)
wherex=[12345]
和f(x)=a
。你最终想要的是f(x)
wherex=[1112.533.545]
(即值和介于值之间的值。如果我们使用“线性”
选项,则介于值之间的值将替换为其相邻值的平均值