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

1 回表示 (過去 30 日間)
AllKindsofMath AllKinds
AllKindsofMath AllKinds 2013 年 11 月 19 日
回答済み: Alfonso Nieto-Castanon 2013 年 11 月 20 日
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
AllKindsofMath AllKinds 2013 年 11 月 19 日
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 件のコメント
Sean de Wolski
Sean de Wolski 2013 年 11 月 19 日
subs(matrix1,x,vector1(4))
AllKindsofMath AllKinds
AllKindsofMath AllKinds 2013 年 11 月 19 日
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
AllKindsofMath AllKinds 2013 年 11 月 19 日
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
Alfonso Nieto-Castanon 2013 年 11 月 20 日
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 Center および File ExchangeMultidimensional Arrays についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by