how to generate a matrix from another matrix

Hi: I am having a matrix called "alpha" with size (1x50) and another matrix called "beta" which is related to alpha through the following relation: beta=0.001/alpha I wanted to get beta as another "1x50" matrix so the number "0.001" contributes to all the values in the matrix "alpha". can any one help me out with this? Naema

 채택된 답변

Sean de Wolski
Sean de Wolski 2014년 6월 20일

0 개 추천

beta = 0.0001./alpha

댓글 수: 4

Naema
Naema 2014년 6월 20일
that worked, thinks!
Naema
Naema 2014년 6월 20일
I have another problem. how to invert alpha , so if alpha values are from 3 to 11 with 50 steps (size of alpha is "1x50"), how can do the following:
r=log(0.001)./(-inv(alpha));
I got the following error: Error using ==> inv Matrix must be square.
Naema
Naema 2014년 6월 20일
so I needed alpha to go from 11 to 3 not from 3 to 11.
Naema, what do you mean by inverse? If you want the element wise inverse such as
1/alpha_ij
then you would use
r=log(0.001)./(-(alpha.^(-1));
If you want alpha flipped, as in you defined alpha as linspace(3,11,50) but actually want linspace(11,3,50) then you can use the fliplr function like this:
r=log(0.001)./(-fliplr(alpha))
If you want the matrix inverse of alpha, well that's impossible to actually find (you can do some funny things with pseudo inverses but they're not real inverses).
If none of that is what you are looking for then you need to ask a new question and better define what it is you are looking for.
Andrew

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

AJ von Alt
AJ von Alt 2014년 6월 20일

0 개 추천

You can use rdivide to do this. "rdivide" will expand the scalar "0.001" to match the size of alpha and perform elementwise division.
alpha = 1:50;
beta = 0.001./alpha;
Andrew
Andrew 2014년 6월 20일

0 개 추천

Hello Naema. There is a really simple solution to this. All you have to do is use element operations by adding a dot.
For instance:
A=randn(50); %generating a random 50x50 matrix
B=0.001./A; %note the dot before the slash.
The reason you need the dot is because when you use something/(a matrix) in matlab, it assumes that you are trying to solve a linear system. By adding in the dot you tell matlab that instead you want to perform the operation of 0.001/A for each element of A. This notation works for many operations as well.
For instance say you want to multiply all of the elements two matrices together. Then we could do:
A=randn(50);
B=randn(50);
C=A.*B;
Here the result C would be the element multiplication of matrices A and B. That is c_ij=a_ij*b_ij. Note that this is much different than usual matrix multiplication.
There are other operators this applies to as well, such as the exponential operator and the likes. It is very useful!

카테고리

도움말 센터File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

태그

질문:

2014년 6월 20일

댓글:

2014년 6월 20일

Community Treasure Hunt

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

Start Hunting!

Translated by