matlab中如何提取一个向量中的元素作为一个变量的下标?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab中如何提取一个向量中的元素作为一个变量的下标?相关的知识,希望对你有一定的参考价值。

比如 a=1 7 6 4 5 10 2 9 8 3;
我要实现D17 D76 D64,就是把上面的向量中相邻的2个元素作为D的下标,该怎么实现?请高手指教。回答正确的我追加悬赏分!

a=[1 7 6 4 5 10 2 9 8 3];

for i=1:2:length(a)
index=a(i)*10+a(i+1);
eval(['D',num2str(index),'=',num2str(i)]); %赋的值,请将num2str(i)中的i修改成相应的值即可。
end
whos
参考技术A 定义如下函数:
function makeVariable(a,k,strRealVar)
N=length(a);
if k<1 return;
if k>N-1 return;
cmd=sprintf("D%d%d=%s",k,k+1,strRealVar);
eval(cmd);

调用实例:
生成变量D76并将数值99.2赋值给它。
makeVariable(a,2,'99');
参考技术B 百度hi交流本回答被提问者采纳

matlab如何提取矩阵中的每一列作为新的变量

一个26行,25列的矩阵,我想把每一列提取出来,r1=[第一列],r2=[第二列]……r25=[第二十五列]

A = rand(26, 25); % 生成一个26行25列的随机矩阵A
[n, m] = size(A); % 获取A的行数n和列数m
r = cell(1, m); % 创建一个长度为m的cell数组,用于存储每一列的数据

for i = 1:m
ri = A(:, i); % 将第i列数据存储到ri中
end

% 将r1到r25存储到变量r1到r25中
for i = 1:m
eval(['r', num2str(i), ' = ri;']);
end

其中,第一个循环将矩阵每一列提取出来,存储到一个长度为m的cell数组r中。第二个循环将r中的每个元素存储到对应的r1到r25变量中,使用了MATLAB的eval函数来动态生成变量名。
需要注意的是,使用eval函数动态生成变量名是不推荐的,因为容易引起代码的可读性和可维护性问题。建议使用cell数组或结构体等数据类型来存储和操作多个变量。
参考技术A for i=1:25
a(i)=A(:,i);
end

以上是关于matlab中如何提取一个向量中的元素作为一个变量的下标?的主要内容,如果未能解决你的问题,请参考以下文章

matlab 定义数组问题?

matlab如何提取矩阵中的每一列作为新的变量

如何在 Java 中提取 MFCC 特征

matlab如何使行向量中的元素平方?

Matlab如何提取非零元素

matlab 如何求一个矩阵所有元素的绝对值的和