substitute each element of a vector into a matrix without using loop

1 次查看(过去 30 天)
Hi I want to substitute each element of vector1 into 'x' in matrix1 and store each matrix in an array without using a loop. Please tell me how.
vector1=[1:1:10];
matrix1=[4*x 5*x ; 4*x 2*x];
Thanks in advance.

采纳的回答

Jan
Jan 2013-11-19
Like this?
vector = 1:1:10;
vector = reshape( vector, [1, 1, numel(vector)] );
one_vector = ones( 1, 1, numel(vector) );
matrix = [4 * vector, 5 * one_vector; 4 * one_vector, 2 * vector ];
  5 个评论
AllKindsofMath AllKinds
Another question, I want to find the determinant of each matrix. So when I try det(matrix) it doesn't work, but with det(matrix(:,:,10)) for example it does. Can I apply 'det' to all elements of 'matrix'?
Jan
Jan 2013-11-20
Not as far as I can see. You will probably have to iterate over the third dimension.

请先登录,再进行评论。

更多回答(3 个)

Sean de Wolski
Sean de Wolski 2013-11-19
So:
vector1=[1:1:10];
x = vector1;
matrix1=[4*x 5*x ; 4*x 2*x];
Or is x symbolic?
clear x;
syms x
matrix1=[4*x 5*x ; 4*x 2*x];
matrix1 = subs(matrix1,x,vector1)
  5 个评论
AllKindsofMath AllKinds
Yeh but I want all of the matrices to be stored in an array so that I can call on them when I need them.

请先登录,再进行评论。


Jan
Jan 2013-11-19
Maybe something like the following?
matrix = [4, 5; 4, 2];
[p, q] = size( matrix );
vector = 1:1:10;
matrix = repmat( matrix(:), 1, numel( vector ) );
matrix = matrix .* repmat( vector, p*q, 1 );
matrix = reshape( matrix, p, q, numel( vector ) );
This gives you a 3d matrix, where each layer contains the specified matrix, mulitplied by one entry in vector
  1 个评论
AllKindsofMath AllKinds
This is almost there! in my example I have each element multiplied by x, but this was probably misleading as each element will not be multiplied by x. So more like
matrix1 = [4*x 5 ; 4 2*x];

请先登录,再进行评论。


Alfonso Nieto-Castanon
perhaps something like:
f = @(x)[4*x 5 ; 4 2*x]; % Matrix in functional form
vector = 1:10; % Your vector of values for 'x'
matrix = arrayfun(f,vector,'uni',0); % A cell array of matrices
values = cellfun(@det,matrix); % Determinant of each of those matrices

类别

Help CenterFile Exchange 中查找有关 Multidimensional Arrays 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by