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