簡體   English   中英

如何在Matlab中使表的表列數

[英]How to make table aritary number of columns in Matlab

我試圖制作一個表並將復雜的數據寫入文件,但是Matlab不會移動列,所以無論我做什么,我只有兩列用於真實和復雜的數據。 我想每列有兩列(實際和復雜)。 因此,假設我的矩陣是X:

X=[1 2 3 4; 5 6 7 8; 9 10 11 12];

這是我將得到的功能和輸出:

function f_save(in)
FID=fopen('C:\Users\mehdi\Music\Saved_file.txt','wt');
[m,n]=size(in);
for ii=1:n

        for jj=1:m 

           fprintf(FID,'%3.10g  %3.10gi \n',[real(in(jj,ii)) imag(in(jj,ii))]);
        end
     fprintf('\t \t');

end
fclose(FID);

輸出為:

  1    0i 
  5    0i 
  9    0i 
  2    0i 
  6    0i 
 10    0i 
  3    0i 
  7    0i 
 11    0i 
  4    0i 
  8    0i 
 12    0i 

但是我希望將輸出分為6列,因此第一列具有自己的虛部和實部,依此類推。

誰能告訴我為什么即使我有fprintf('\\t \\t');也不移至下一列fprintf('\\t \\t');

如果我了解您的問題,那么您需要這樣做:

for ii=1:n
        for jj=1:m 
           fprintf(FID,'%3.10g\t%3.10gi\t',[real(in(jj,ii)) imag(in(jj,ii))]);
        end
     fprintf(FID,'\n');
end

給您m*2列的輸出。

首先,real()和imag()以相反的方式工作,它們獲得復數的實部和虛部,並且不對復數進行實數處理。 為了使它虛構,只需使用'i':

a=1+2i
real(a) % is 1
imag(a) % is 2

如果您只想將數字寫入文件,則matlab不需要知道什么是真實的和虛構的。 您可能已經意識到這一點,但是在這種情況下,將實數從1改為12是一個比較奇怪的例子。

第二,您應該交換for循環。 現在它正在為每一列和每一行做某事,但是您必須以另一種方式編寫。

FID=fopen('Saved_file.txt','wt');
in=[1 2 3 4; 5 6 7 8; 9 10 11 12];
[m,n]=size(in);
for ii=1:m %for each row
        for jj=1:n %for each column
           fprintf(FID,'%3.10g %3.10gi \t',[real(in(ii,jj)) imag(in(ii,jj))]);
        end
     fprintf(FID,'\n');
end

如果需要,可以添加\\ t(制表符)。 但是在循環行的末尾需要一個\\ n(換行符)

暫無
暫無

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

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