English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

a=[1 2 3 4 5 6 7 8 9 10]; %1*10的 一維矩陣
問題來了!我需要
b=[1 1 2 3 4 5 6 7 8 9];
c=[1 1 1 2 3 4 5 6 7 8];
d=[1 1 1 1 2 3 4 5 6 7];
e=[1 1 1 1 1 2 3 4 5 6];
…\'
當矩陣位移一個時,矩陣維度不變,但內值第一個補1,其餘往後位移一個
前提,我真正的矩陣維度很大(例如: 1*100000)。
能不使用 for更好 。

2006-04-26 08:37:34 · 2 個解答 · 發問者 斌君 2 in 電腦與網際網路 程式設計

我真正的矩陣維度雖然很大,但是裡面的數值,是隨機亂數!例如: randn(1,100000)。
使用 for 也可以。

2006-04-26 15:49:27 · update #1

2 個解答

這個矩陣真的很大 十萬...
我用double的只能5000~6000之間,程式如下:

num = 5000; %(1~5000)
a = [num:-1:1 ones(1,num-1)];
x = [num:-1:1];
y = [1:num]'-1;
b = x(ones(num,1),:) + y(:,ones(num,1));
b = a(b);
%disp(b) %最後答案是b,很大不適合顯示

因為不用for,所以我只能把你的所有變數放在同一個
雖然插了四條256M,最終記憶體只吃到兩百多M
我不知道怎麼樣可以擴充設定
用uint32的話可以在多加個幾千
uint8跟uint16,只能顯示到255跟六萬多,所以沒辨法

2006-04-26 20:13:57 補充:
fid = fopen('x.txt','w');num = 400000;X = randn(1,num);for z = 1:num fprintf(fid,'%+.3f\t',X); %-----寫入檔案,只顯示小數後三位 fprintf(fid,'\r\n'); X(end) = []; X = [1 X];endfclose(fid);有加亂數的,可能會跑很久,慢慢跑吧

2006-04-26 15:34:32 · answer #1 · answered by 女友糖尿我蛀牙 3 · 0 0

有一個方法 不知道試不試用
a=randn(1,1000)
b=[1 a(1:length(a)-1)]
c=[1 b(1:length(b)-1)]
....以此類推
希望符合你的需求!!!

2006-05-01 22:00:56 補充:
若是連abcde....都要用自動顯示
可使用Ascii 轉字串 (char)
例:a=61(16進制)=97(10進制)
要用10進制的,char(97)
就是a。再使用數值自動+1便可。

2006-05-01 17:49:04 · answer #2 · answered by ANDY 2 · 0 0

fedest.com, questions and answers