簡體   English   中英

100x100矩陣MATLAB編碼

[英]100x100 Matrix MATLAB coding

我想生成一個與此類似的100x100矩陣,其中第一行和最后一行是不同的,而中間的行都相同,但移動了1。

這是我對10x10矩陣的要求:

>> A=[0.8 -0.2 0 0 0 0 0 0 0 0;
-0.3 0.5 -0.2 0 0 0 0 0 0 0;
0 -0.3 0.5 -0.2 0 0 0 0 0 0;
0 0 -0.3 0.5 -0.2 0 0 0 0 0;
0 0 0 -0.3 0.5 -0.2 0 0 0 0;
0 0 0 0 -0.3 0.5 -0.2 0 0 0;
0 0 0 0 0 -0.3 0.5 -0.2 0 0;
 0 0 0 0 0 -0.3 0.5 -0.2 0;
0 0 0 0 0 0 0 -0.3 0.5 -0.2;
0 0 0 0 0 0 0 0 -0.3 0.7;]

B= [62; 0; 0; 0; 0; 0; 0; 0; 0; 82]

>> solution=inv(A)*B

任何幫助深表感謝。

非常感謝。

您想要的被稱為帶矩陣也可以看到這個

n=10;
e=ones(n,1);
A=spdiags([-0.3*e 0.5*e -0.2*e],-1:1,n,n)

現在這是一個稀疏矩陣,其中不存儲零,可以提高存儲速度。 如果您需要一個完整的矩陣,只需使用A=full(spdiags(...))

對於B請執行以下操作:

B=ones(10,1)*0.8;
B(1) =62;
B(10)=82;

創建A的代碼是:

A = zeros(100);
A(1,1:2) = [0.8 -0.2];
for i = 2:99
    A(i,i-1:i+1) = [-0.3 0.5 -0.2];
end
A(100,99:100) = [-0.3 0.7];

然后,您可以使用相同的模板進行B操作。

方法1:

%%// Only this part would change when you go from your sample size of 10 to 100
N = 100; 

A = zeros(N); %%// Initialize
A(1:size(A,1)+1:end) = 0.5; %%// Diagonal values
A(2:size(A,1)+1:end) = -0.3;%%// Left-to-diagonal values
A(size(A,1)+1:size(A,1)+1:end) = -0.2;%%// Right-to-diagonal values
A([1 end]) = [0.8 0.7]; %% Different scalars at the top and end

方法二:

N = 100; %%// Size of matrix

L = -0.3; %%// Left to diagonal values
D = 0.5;  %%// Diagonal values
R = -0.2;  %%// Right to diagonal values

A = D*diag(ones(N,1)) + R*diag(ones(N-1,1),1) + L*diag(ones(N-1,1),-1);
A([1 end]) = [0.8 0.7]; %% Different scalars at the top and end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM