matlab將字串轉化為函式名稱

2021-03-04 01:50:05 字數 5746 閱讀 6818

1樓:匿名使用者

用str2func把字串轉換為函式控制代碼:

>> p='sin';

>> p=str2func(p);

>> x=1:10;

>> all(p(x)==sin(x))

ans =

1只需要第2句,其餘部分為示例。

matlab如何將一個字串轉化為一個變數名? 50

2樓:重歸於好

eval([a '=b;'])

可以原bai汁原味b賦值du給a所儲存變數名zhi,沒有任何精度損失,且dao

適用於任意數回據型別。

連續load,每改答變file_name

for i = 1:13

name = ['data1_al_',num2str(i),'__u'];

load name;

% your code;

load用eval(s)執行順便賦值(s命令列)比c/c++簡單很多,直接一個命令列搞定,如下: >> str = 'abc' str = abc

3樓:匿名使用者

樓上來的回答欠妥。源

用eval函式沒錯,但按照樓bai上的用法,適du應性很差,比如b是其它資料類zhi型的dao,例如struct或cell之類的呢?而且使用num2str這類函式本身還存在有效數字導致的精度損失問題。

其實正確的用法非常簡單:

eval([a '=b;'])

可以原汁原味的把b賦值給a所儲存的變數名中,沒有任何精度損失,且適用於任意資料型別。

4樓:匿名使用者

a='aea';

b=1;

eval([a,'=',num2str(b)])

【matlab】如何將輸入字串轉換成函式?

5樓:天雲一號

可以用eval函式,比如eval('y=x+3');執行的就是y=x+3的命令

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

6樓:匿名使用者

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

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

eval(str1);

相當於執行了這個語句。

7樓:

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

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

8樓:楊好巨蟹座

字 符 串 轉 換

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 '))

o***wothree

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;

matlab怎樣實現數字和字元的轉換

9樓:大野瘦子

數字轉字串:

template

static std::string num2str(t v)字元向字元轉換:

a=str2num('3'),得到a=3

字串和數字之間的相互轉換總結

可以使用的函式stoi(),stod(),stoll()等舉例:

string str = "3.1415926";

cout

cout<符串轉數字:使用sscanf()函式,舉例如下:

char str="1234321";

int a;

sscanf(str,"%d",&a);

/////////////////////////////char str="123.321";

double a;

sscanf(str,"%lf",&a);

////////////////////////////char str="af";

int a;

sscanf(str,"%x",&a); //16進位制轉換成10進位制使用stringstream,舉例如下:

string s = "17";

stringstream ss;

ss

ss>>i;

cout<

10樓:匿名使用者

數字向字元轉換

a=num2str(3),得到a=『3』

字元向字元轉換

a=str2num('3'),得到a=3

matlab怎麼將字串變成數字

數字向字元轉換 a num2str 3 得到a 3 字元向字元轉換 a str2num 3 得到a 3 matlab 獲取字串中的數字 matlab是matrix laboratory兩個詞的組合,意為版矩陣工廠 權 矩陣實驗室 是由美國mathworks公司釋出的主要面對科學計算 視覺化以及互動式...

keil c中如何把字串轉化為整型具體一點

可以使用sscanf,就像sprintf將整型數轉換成字串輸出一樣,逆運算 keilc 中scanf和printf確定了通過微控制器序列口完成輸入輸出模式,除非做了修改,一般實際中不用 給你個例子 unsigned char string 5 unsigned intn sscanf string,...

matlab中怎麼將變數變成字串

names who 這個 bai可以以一個cell陣列返 du回當前工作區間內zhi的所有dao變數名回 names who a 返回所有以a開頭的變數名,和 兩個萬用字元含義 答同dos下 更多的用法去看help who matlab 中如何將一個字串賦值給一個變數 單個表示直接輸入 y syms...