how can I create a matrix from calculated answers
6 次查看(过去 30 天)
显示 更早的评论
I have this answers and I want to put them in a diagonal matrix.Pls help me!
y =
0.0025 + 0.0155i
y =
0.0030 + 0.0171i
y =
0.0038 + 0.0191i
y =
0.0049 + 0.0216i
y =
0.0066 + 0.0248i
y =
0.0092 + 0.0289i
y =
0.0137 + 0.0344i
y =
0.0220 + 0.0414i
y =
0.0388 + 0.0487i
y =
0.0717 + 0.0450i
y =
1000000
y =
0.0717 - 0.0450i
y =
0.0388 - 0.0487i
y =
0.0220 - 0.0414i
y =
0.0137 - 0.0344i
y =
0.0092 - 0.0289i
y =
0.0066 - 0.0248i
y =
0.0049 - 0.0216i
y =
0.0038 - 0.0191i
y =
0.0030 - 0.0171i
y =
0.0025 - 0.0155i
2 个评论
James Tursa
2011-2-26
Can you show the code that generates these numbers? You can pre-allocate a result and then assign them to the appropriate spots in the result, or maybe there is a better vectorized solution, but we can't tell without seeing your code.
采纳的回答
Matt Fig
2011-2-26
Don't you think it would help if you showed us how that "this answers" was generated? It really would.
.
.
.
.
.
.
EDIT
O.k., here is one way, with your FOR loop:
clear all
f=1E3;
L1=1E-3;
L2=100;
Rs=1E-6;
R1=10;
w=2*pi*f;
k=10;
z1=eye(21); % I assume you want this to be the matrix.
cnt = 1;
for a = -11:k-1
omega = w*(a+1);
z1(cnt,cnt)=1/(Rs+(j*omega*L2*((R1+j*omega*L1)))/(R1+j*omega*(L1+L2)));
cnt = cnt + 1;
end
Or, simpler:
f=1E3;
L1=1E-3;
L2=100;
Rs=1E-6;
R1=10;
w=2*pi*f;
k=10;
omega = w*((-11:k-1)+1);
z1_2 = diag(1./(Rs+(j*omega*L2.*((R1+j*omega*L1)))./(R1+j*omega*(L1+L2))));
Now if you compare z1 and z1_2, you will see that they are equal.
2 个评论
更多回答(2 个)
Matt Tearle
2011-2-26
M = zeros(n);
for k = 1:n
% calculate y
M(k,k) = y;
end
Or, preferably, if you can calculate all the y values in a vector, as explained here you can then do
M(1:n+1:end) = y;
Edit: fixed typo ( n+1 instead of n )
4 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!