matlab中如何將全字串檔案轉換成指定數字值的矩陣

2021-04-13 01:52:13 字數 8814 閱讀 9627

1樓:匿名使用者

假如文bai

件data放在due盤,,代zhi碼如下

dao版

str=importdata('e:\data.txt','\n');

n=length(str);

m=length(str);

y=zeros(n,5);

for i=1:n

for j=1:m

if str(j)=='a'

y(i,j)=1;

elseif str(j)=='b'

y(i,j)=2;

elseif str(j)=='c'

y(i,j)=3;

else

y(i,j)=4;

endend

endy

得到的結果為

權y =

1 2 3 4 3 3 4

2 4 3 3 1 1 2

1 4 3 3 1 1 1

怎樣用matlab將含有字母的txt檔案中的數字匯入matlab中

2樓:匿名使用者

用load,textread或者importdata文字(txt)格式的檔案,只能識別資料,對其中的文字無法讀取。

可以使用回fscanf或者sscanf的方式讀答取,

思路為:定義cell矩陣,先全部以字元的方式讀入,再將其中的數字轉換為資料格式。

**如下:

m=8;n=3;

data=cell(m,n);%定義cell矩陣,儲存檔案內容

fid=fopen('test.txt','r');%以唯讀方式開啟檔案

for i=1:m

for j=1:n

data=fscanf(fid,'%s',[1,1]);%以字元方式讀取每個值,遇空格完成每個值的讀取

endend

fclose (fid);

for i=1:m

for j=2:n

data=str2double(data);%將文字格式轉為數字格式

endend

str=cell(m,1);用於儲存data的第一列

for i=1:m

str=data;end

matlab讀取txt檔案中的資料存為矩陣

3樓:

1、開啟乙個txt檔案,會發現他既有字元又有數值。

2、此時將字元全部刪除,只留下有用的資料數值。

3、記住該資料夾的位址,一會要作為路徑用於matlab讀取。

4、此時使用乙個textread函式,函式內部代入剛才的txt檔案路徑。

5、textread函式會把這些資料讀成1為向量。我們將其分為兩列,用x和y代表,儲存為矩陣。

4樓:du瓶邪

1)開啟檔案

在讀寫檔案之前,必須先用fopen函式開啟或建立檔案,並指定對該檔案進行的操作方式。fopen函式的呼叫格式為:

fid=fopen(檔名,『開啟方式』)

說明:其中fid用於儲存檔案控制代碼值,如果返回的控制代碼值大於0,則說明檔案開啟成功。檔名用字串形式,表示待開啟的資料檔案。常見的開啟方式如下:

 『r』:唯讀方式開啟檔案(預設的方式),該檔案必須已存在。

 『r+』:讀寫方式開啟檔案,開啟後先讀後寫。該檔案必須已存在。

 『w』:開啟後寫入資料。該檔案已存在則更新;不存在則建立。

 『w+』:讀寫方式開啟檔案。先讀後寫。該檔案已存在則更新;不存在則建立。

 『a』:在開啟的檔案末端新增資料。檔案不存在則建立。

 『a+』:開啟檔案後,先讀入資料再新增資料。檔案不存在則建立。

另外,在這些字串後新增乙個「t」,如『rt』或『wt+』,則將該檔案以文字方式開啟;如果新增的是「b」,則以二進位制格式開啟,這也是fopen函式預設的開啟方式。

2)關閉檔案

檔案在進行完讀、寫等操作後,應及時關閉,以免資料丟失。關閉檔案用fclose函式,呼叫格式為:

sta=fclose(fid)

說明:該函式關閉fid所表示的檔案。sta表示關閉檔案操作的返回**,若關閉成功,返回0,否則返回-1。如果要關閉所有已開啟的檔案用fclose(『all』)。

2、二進位制檔案的讀寫操作

1)寫二進位制檔案

fwrite函式按照指定的資料精度將矩陣中的元素寫入到檔案中。其呼叫格式為:

count=fwrite(fid,a,precision)

說明:其中count返回所寫的資料元素個數(可預設),fid為檔案控制代碼,a用來存放寫入檔案的資料,precision代表資料精度,常用的資料精度有:char、uchar、int、long、float、double等。

預設資料精度為uchar,即無符號字元格式。

例6.8 將乙個二進位制矩陣存入磁碟檔案中。

>> a=[1 2 3 4 5 6 7 8 9];

>> fid=fopen('d:\test.bin','wb') %以二進位制資料寫入方式開啟檔案

fid =

3 %其值大於0,表示開啟成功

>> fwrite(fid,a,'double')

ans =

9 %表示寫入了9個資料

>> fclose(fid)

ans =

0 %表示關閉成功

2)讀二進位制檔案

fread函式可以讀取二進位制檔案的資料,並將資料存入矩陣。其呼叫格式為:

[a,count]=fread(fid,size,precision)

說明:其中a是用於存放讀取資料的矩陣、count是返回所讀取的資料元素個數、fid為檔案控制代碼、size為可選項,若不選用則讀取整個檔案內容;若選用則它的值可以是下列值:n(讀取n個元素到乙個列向量)、inf(讀取整個檔案)、[m,n](讀資料到m×n的矩陣中,資料按列存放)。

precision用於控制所寫資料的精度,其形式與fwrite函式相同。

3、文字檔案的讀寫操作

1)讀文字檔案

fscanf函式可以讀取文字檔案的內容,並按指定格式存入矩陣。其呼叫格式為:

[a,count]=fscanf(fid,format,size)

說明:其中a用來存放讀取的資料,count返回所讀取的資料元素個數,fid為檔案控制代碼,format用來控制讀取的資料格式,由%加上格式符組成,常見的格式符有:d(整型)、f(浮點型)、s(字串型)、c(字元型)等,在%與格式符之間還可以插入附加格式說明符,如資料寬度說明等。

size為可選項,決定矩陣a中資料的排列形式,它可以取下列值:n(讀取n個元素到乙個列向量)、inf(讀取整個檔案)、[m,n](讀資料到m×n的矩陣中,資料按列存放)。

2)寫文字檔案

fprintf函式可以將資料按指定格式寫入到文字檔案中。其呼叫格式為:

fprintf(fid,format,a)

說明:fid為檔案控制代碼,指定要寫入資料的檔案,format是用來控制所寫資料格式的格式符,與fscanf函式相同,a是用來存放資料的矩陣。

例6.9 建立乙個字元矩陣並存入磁碟,再讀出賦值給另乙個矩陣。

>> a='string';

>> fid=fopen('d:\char1.txt','w');

>> fprintf(fid,'%s',a);

>> fclose(fid);

>> fid1=fopen('d:\char1.txt','rt');

>> fid1=fopen('d:\char1.txt','rt');

>> b=fscanf(fid1,'%s')

b =string

matlab讀txt檔案

fid=fopen('fx.txt','r'); %得到檔案號

[f,count]=fscanf(fid,'%f %f',[12,90]);

%把檔案號1的資料讀到f中。其中f是[12 90]的矩陣

%這裡'%f %f'表示讀取資料的形勢,他是按原始資料型讀出

fclose(fid);

%關閉檔案

另外有的txt檔案還可以用load來開啟

其語句為

f=load('fx.txt)

乙個寫入txt檔案的小例子:

n=100;

r=rand(1,n);

fid = fopen('tt.txt','wt');

for k=1:n;

p=num2str(r(k));

fprintf(fid,'%c',p);

fprintf(fid,'%c\n',' ');

endfclose(fid);

5樓:匿名使用者

fid=fopen('檔名','r');

s=fread(fid,inf,'uint8=>char')';%讀取檔案內容

fclose(fid);

str=regexp(s,'([-+]?\d+)(\.)?(\d*)([ee][-+]?\d+)?','match');%匹配數值的字串

data=cellfun(@str2num,str);%字串轉為數值存在data中

a=reshape(data,[3 4 length(data)/12]);%整形

a=permute(data,[2 1 3]);

最後a是個三維矩陣,

a(:,:,1)是第一組資料,

a(:,:,2)是第二組資料。。。。以此類推

在倒數第三句中data已經是所有資料組成的行向量

你可以根據自己的需要,讓它變形為你所需要的資料

6樓:匿名使用者

你把資料放入到txt文件中。例如a=[資料]

在matlab中輸入檔名,就會生成變數a,當中儲存你的資料

matlab在edit裡面輸入的字串型數值如何轉換成陣列或者矩陣?

matlab中,如何將字串轉換為命令控制字?

7樓:匿名使用者

eval()這個函式滿足你的要求。

如:str1=『set(text1,「string」,a(1))』;

eval(str1);

相當於執行了這個語句。

8樓:

請問你這裡的text1是什麼?物件?普通變數?物件的handle?

你在引用text1之前,text1是否已經存在?

9樓:楊好巨蟹座

字 符 串 轉 換

abs字串到ascii轉換

dec2hex

十進位制數到十六進製制字串轉換

fprintf

把格式化的文字寫到檔案中或顯示屏上

hex2dec

十六進製制字串轉換成十進位制數

hex2num

十六進製制字串轉換成ieee浮點數

int2str

整數轉換成字串

lower

字串轉換成小寫

num2str

數字轉換成字串

setstr

ascii轉換成字串

sprintf

用格式控制,數字轉換成字串

sscanf

用格式控制,字串轉換成數字

str2mat

字串轉換成乙個文字矩陣

str2num

字串轉換成數字

upper

字串轉換成大寫

在許多情況下,希望把乙個數值嵌入到字串中。幾個字串轉換可完成這個任務。

» rad=2.5; area=pi*rad^2;

» t=[' a circle of radius ' num2str(rad) ' has an area of ' num2str(area) ' . ' ] ;

» disp(t)

a circle of radius 2.5 has an area of 19.63.

這裡函式num2str用來把數值轉換成字串,字串連線用來把所轉換的數嵌人到乙個字串句子中。按類似方式,int2str把整數轉換成字串。無論是num2str還是int2str都呼叫函式sprintf,它用類似c語言語法把數值轉換成字串。

函式fprintf經常是函式disp的乙個有用替換,由於它提供了對結果更多的控制。當準備把格式化的資料寫到乙個檔案中去時,按預設它在命令視窗顯示結果。例如,

» fprintf(' see what this does ')

see what this does»

» fprintf(' see what this does\n ')

see what this does

在上面第乙個例子裡,fprintf顯示字串,然後立即給出matlab提示符。相反,在第二個例子裡,\n 插入乙個新行字元,在matlab提示符出現之前建立乙個新行。

無論fprintf還是sprintf以同樣方式處理輸入參量,但fprintf把輸出送到顯示屏或檔案中,而sprintf把輸出返回到乙個字串中。例如,上面的例子用num2str可重寫為

» t=sprintf(' a circle of radius %.4g has an area of %.4g. ', rad, area);

» disp(t)

a circle of radius 2.5 has an area of 19.63.

» fprintf(' a circle of radius %.4g has an area of %.4g.\n ' , rad, area)

a circle of radius 2.5 has an area of 19.63.

這裡%.4g是用在函式num2str中的資料格式。%.

4g就是用指數或定點標記,不管哪一種更短些,只顯示至4位數字。除了g格式,還可用e (指數)和f (定點)轉換。表6.

2表明在各種不同轉換下,如何顯示pi結果。

表6.2

數 值 格 式 轉 換 例 子

命令結果

fprintf(' %.0e\n ',pi)

3e+00

fprintf(' %.1e\n ',pi)

3.1e+00

fprintf(' %.3e\n ',pi)

3.142e+00

fprintf(' %.5e\n ',pi)

3.14159e+00

fprintf(' %.10e\n ',pi)

3.1415926536e+00

fprintf(' %.0f\n ',pi)

3fprintf(' %.1f\n ',pi)

3.1fprintf(' %.3f\n ',pi)

3.142

fprintf(' %.5f\n ',pi)

3.14159

fprintf(' %.10f\n ',pi)

3.1415926536

fprintf(' %.0g\n ',pi)

3fprintf(' %.1g\n ',pi)

3fprintf(' %.3g\n ',pi)

3.14

fprintf(' %.5g\n ',pi)

3.1416

fprintf(' %.10g\n ',pi)

3.141592654

fprintf(' %.8.0g\n ',pi)

3fprintf(' %.8.1g\n ',pi)

3fprintf(' %.8.3g\n ',pi)

3.14

fprintf(' %.8.5g\n ',pi)

3.1416

fprintf(' %.8.10g\n ',pi)

3.141592654

注意,對e 和f 格式,小數點右邊的十進位制數就是小數點右邊要顯示的多少位數字。相反,在g 的格式裡,小數點右邊的十進位制數指定了顯示數字的總位數。另外,注意最後的五行,其結果指定為8個字元長度,且是右對齊。

在最後一行,8被忽略,因為指定超過了8位。

概括起來,當需要比預設函式disp,num2str和int2str所提供的更多的控制時,fprintf和sprintf是有用的。

函式str2mat把一列的幾個字串轉換成乙個字串矩陣。例如,

» a=' one ' ; b= ' two ' ; c= ' three ' ;

» disp(str2mat(a, b, c, ' four '))

onetwothree

four

從上面看不明顯,上面的每行有同樣數目的元素。較短行用空格補齊,使結果形成乙個有效的矩陣

在逆方向轉換中,有時是很方便的。

» s= ' [1 2; pi 4] ' % a string of a matlab matrix

s =[1 2; pi 4]

» str2num(s)

ans =

1.0000 2.0000

3.1416 4.0000

» s=' 123e+5 ' % a string containing a ****** number

s =123e+5

» str2num(s)

ans =

12300000

函式str2num不能接受使用者定義的變數,也不能執行轉換過程的算術運算。

pcolor(x,y,c)函式的用法: x,y是用來定位的,c是用來填充顏色的。

當x,y是向量時,x與c的列對應,y與c的行對應,因此向量x和y的維數必須要求與c的列與行統一。所以使用時注意檢查x,y,c的大小和維數。

其後面最好用上函式:shading interp;

labview中如何將16進製制的字串按位截娶變成與

用格式化字串,正規表示式用 2x就可以了,我現在沒lv,不能給你截圖,你自己試試 直接轉化資料型別,你本來處理的就是字串 每個數字和字母 區分大小寫 都會對應乙個ascll碼值。可以先查ascll表,在進行進製轉換,進製轉換,可以在excel 中進行。labview 16進製制顯示的字串和10進製數...

如何用matlab將一組字串寫入excel的格

m視界 舉例說明 filename testdata.xlsx a sheet 1 xlrange a1 xlswrite filename,a,sheet,xlrange 執行結果如下 關鍵點 a a必須一個cell型別 a time 則不會將time作為一個整體寫入excel單元格。覺得有幫助就...

怎麼將字串中的空格替換成,C 字串中空格替換問題,求指教!線上等,謝謝!

include include main puts str 要替換乙個字串中的所有空格,一種想法是開闢乙個新的字元陣列,然後對字串進行遍歷,若遇到普通字元,則將字元拷貝到新陣列中,若遇到空格,則直接跳過或進行替換。這種方法需要使用額外的空間。如果已知原字串中有足夠的空間容納替換,且不允許使用額外的陣...