matlab 单位矩阵怎样将任意类型矩阵,在不影响其精度的情况下,写成tiffge'shi

matlab中如何将char类型的数据转换为数值型的_百度知道
matlab中如何将char类型的数据转换为数值型的
我有更好的答案
1、整型:(int8;uint8;int16;uint16;int32;uint32;int64;uint64)通过intmax(class)和intmin(class) 函数返回该类整型的最大值和最小值,例如intmax(‘int8’)=127;
2、浮点:(single;double)浮点数:REALMAX('double')和REALMAX('single')分别返回双精度浮点和单精度浮点的最大值,REALMIN('double')和REALMIN ('single')分别返回双精度浮点和单精度浮点的最小值。3、逻辑:(logical)Logical:下例是逻辑索引在矩阵操作中的应用,将5*5矩阵中大于0.5的元素设定为0:
A = rand(5);
A(A&0.5)=0;4、字符:(char)Matlab中的输入字符需使用单引号。字符串存储为字符数组,每个元素占用一个ASCII字符。如日期字符:DateString=’9/16/2001’ 实际上是一个1行9列向量。构成矩阵或向量的行字符串长度必须相同。可以使用char函数构建字符数组,使用strcat函数连接字符。例如,命令 name = ['abc' ; 'abcd'] 将触发错误警告,因为两个字符串的长度不等,此时可以通过空字符凑齐如:name = ['abc ' ; 'abcd'],更简单的办法是使用char函数:char(‘abc’,’abcd’),Matlab自动填充空字符以使长度相等,因此字符串矩阵的列纬总是等于最长字符串的字符数.例如size(char(‘abc’,’abcd’))返回结果[2,4],即字符串’abc’实际存在的是’abc ’,此时如需提取矩阵中的某一字符元素,需要使用deblank函数移除空格如name =char(‘abc’,’abcd’); deblank(name(1,:))。此外,Matlab同时提供一种更灵活的单元格数组方法,使用函数cellstr可以将字符串数组转换为单元格数组:data= char(‘abc’,’abcd’)
length(data(1,:)) -&? 4
cdata=cellstr(data)
length(cdata{1}) -&?3常用的字符操作函数blanks(n) 返回n个空字符
deblank(s) 移除字符串尾部包含的空字符
(string) 将字符串作为命令执行
findstr(s1,s2) 搜索字符串
ischar(s) 判断是否字符串
isletter(s) 判断是否字母
lower(s) 转换小写
upper(s) 转换大写
strcmp(s1,s2) 比较字符串是否相同
strncmp(s1,s2,n) 比较字符串中的前n个字符是否相同
strrep(s1,s2,s3) 将s1中的字符s2替换为s35、日期和时间Matlab提供三种日期格式:日期字符串如’’,日期序列数如00年1月1日为1)以及日期向量如
0 0 0,依次为年月日时分秒。常用的日期操作函数datestr(d,f) 将日期数字转换为字符串
datenum(str,f) 将字符串转换为日期数字
datevec(str) 日期字符串转换向量
weekday(d) 计算星期数
eomday(yr,mth) 计算指定月份最后一天
calendar(str) 返回日历矩阵
clock 当前日期和时间的日期向量
date 当前日期字符串
now 当前日期和时间的序列数6、结构结构是包含已命名“数据容器”或字段的数组。结构中的字段可以包含任何数据。7、构建结构数组(1)赋值方法下面的赋值命令产生一个名为patient的结构数组,该数组包含三个字段:patient.name = 'John Doe';patient.billing = 127.00;patient.test = [79 75 73; 180 178 177.5; 220 210 205];在命令区内输入patient可以查看结构信息:name: 'John Doe'billing: 127test: [3x3 double]继续赋值可扩展该结构数组:patient(2).name = 'Ann Lane';patient(2).billing = 28.50;patient(2).test = [68 70 68; 118 118 119; 172 170 169];赋值后结构数组变为[1 2]。(2)构建结构数组:struct函数 函数基本形式为:strArray = struct('field1',val1,'field2',val2, ...)例如:weather(1) = struct('temp', 72,'rainfall', 0.0);weather(2) = struct('temp', 71,'rainfall', 0.1);
weather = repmat(struct('temp', 72, 'rainfall', 0.0), 1, 3);
weather = struct('temp', {68, 80, 72}, 'rainfall', {0.2, 0.4, 0.0});(3)访问结构数据以下都是合法的结构数组访问命令:mypatients = patient(1:2) 获取子结构数据mypatients(1) 访问结构数据patient(2).name 访问结构数据中的特定字段patient(3).test(2,2) 访问结构数据中的特定字段(该字段为数组)bills = [patient.billing] 访问多个结构tests = {patient(1:2).test} 提取结构数据转换成单元格数组使用结构字段的动态名称通过structName.(expression_r_r_r)可以赋予结构字段名称并访问数据。例如字段名为expression_r_r_r、结构名为structName,访问其中第7行1至25列数据可以使用命令:structName.(expression_r_r_r)(7,1:25)。例如,存在一个学生每周成绩数据结构数组,其数据通过以下方式建立:testscores.wang.week(1:25) = ...
[95 89 76 82 79 92 94 92 89 81 75 93 ...
85 84 83 86 85 90 82 82 84 79 96 88 98];testscores.chen.week(1:25) = ...
[87 80 91 84 99 87 93 87 97 87 82 89 ...
86 82 90 98 75 79 92 84 90 93 84 78 81];即结构名为testscores,字段使用每个学生的名称命名,分别为wang和chen,每个学生下面包含名为week的成绩结构数组。现计算给定结构名称、学生名称和起止周数的平均分数。在命令窗口中输入 edit avgscore.m,输入以下代码后保存文件:function avg = avgscore(struct,student, first, last)
avg = sum(struct.(student).week(first:last))/(last - first + 1);在命名窗口中输入:avgscore(testscores, 'chen', 7, 22) 计算学生陈从第7周到第22周的平均分数。(4)添加和删除结构字段命令[struct](index).(field)可添加或修改字段。如patient(2).ssn = '000-00-0000' 在结构patient中添加一个名为ssn的字段。删除字段使用rmfield函数,如patient2 = rmfield(patient, 'name') 删除name字段并产生新的结构。8、单元格数组:(cell)单元格数组提供了不同类型数据的存储机制,可以储存任意类型和任意纬度的数组。访问单元格数组的规则和其他数组相同,区别在于需要使用花括号{}访问,例如A{2,5}访问单元格数组A中的第2行第5列单元格。(1)构建单元格数组:赋值方法使用花括号标识可直接创建单元格数组,如:A(1,1) = {[1 4 3; 0 5 8; 7 2 9]};
A(1,2) = {'abcd'};
A(2,1) = {3+7i};
A(2,2) = {-pi:pi/10:pi};上述命令创建2*2的单元格数组A。继续添加单元格元素直接使用赋值如A(2,3)={5}即可,注意需使用花括号标识。简化的方法是结合使用花括号(单元格数组)和方括号()创建,如C = {[1 2], [3 4]; [5 6], [7 8]};(2)构建单元格数组:函数方法Cell函数。如:B = cell(2, 3);B(1,3) = {1:3};(3)访问数据通过索引可直接访问单元格数组中的数据元素,例如:N{1,1} = [1 2; 4 5];N{1,2} = 'Name';N{2,1} = 2-4i;N{2,2} = 7;c = N{1,2}d = N{1,1}(2,2)9、函数句柄函数句柄是用于间接调用一个函数的Matlab值或数据类型。在调用其它函数时可以传递函数句柄,也可在数据结构中保存函数句柄备用。通过命令形式 fhandle = @functionname 可以创建函数句柄,例如 trigFun=@sin,或匿名函数sqr = @(x) x.^2;。使用句柄调用函数的形式是 fhandle(arg1, arg2, ..., argn) 或 fhandle()(无参数)。如:trigFun(1)。例:function x = plotFHandle(fhandle, data)plot(data, fhandle(data))plotFHandle(@sin, -pi:0.01:pi)数据类型转换如C语言中的强制类型转换相似e.g.:y=9;z=double(y);
Matlab中的图像数据类型转换MATLAB中读入图像的数据类型是uint8,而在矩阵中使用的数据类型是double因此 I2=im2double(I1) :把图像数组I1转换成double精度类型;如果不转换,在对uint8进行加减时会产生溢出,可能提示的错误为:Function '*' is not defined for values of class 'uint8'。
采纳率:78%
来自团队:
and an 'i' or &#39str2num用法参见help str2num:STR2NUM Convert string matrix to numeric array.
X = STR2NUM(S) converts a character array representation of a matrix of
numbers to a numeric matrix. F1+2i') and
str2num('3 4]
'3 4']
The numbers in the string matrix S should be ASCII character
representations of a numeric values.
Each numbe for a complex unit.
These problems are also avoided when you use STR2DOUBLE,OK]=STR2NUM(S) will
return OK=0 if the conversion failed,j&#39, a leading + or - sign, an &#39.
CAUTION: STR2NUM uses EVAL to conver1 + 2i') produce x = 1+2i while str2num('1 +2i') produces
x = [1 2i];e&#39, str2num(' or 'd' preceding a
power of 10 scale factor.
If the string S does not represent a valid number or matrix,
STR2NUM(S) returns the empty matrix.
STR2DOUBLE to avoid such side effects or when S contains a single
Also spaces can be significant.
For instance, so side
effects can occur if the string contains calls to functions.
See also str2double, num2str,
S = ['1 2'
str2num(S) =& [1 2
本回答被提问者采纳
为您推荐:
其他类似问题
您可能关注的内容
类型 数据 char matlab的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。Matlab中图片保存的四种方法 - 技术蛀虫 - 博客园
随笔 - 105
文章 - 131
matlab的绘图和可视化能力是不用多说的,可以说在业内是家喻户晓的。Matlab提供了丰富的绘图函数,比如ez**系类的简易绘图函数,surf、mesh系类的数值绘图函数等几十个。另外其他专业工具箱也提供了专业绘图函数,这些值得大家深入学习好久。今天我只是讨论下如何保存这些由Matlab绘制出来的图像呢?当然借助第三方截图软件,就算了!1、直接另存为在figure中使用菜单file&&&saveas&&&选择保存形式(fig,eps,jpeg,gif,png,bmp等),这个的缺点是另存为的图像清晰度有很大的牺牲2、复制到剪贴板在figure中使用菜单edit&&&copy figure&&&此时图像就复制到剪贴板了,我们可以借助其他软件(比如:绘图板)保存为需要的图片3、saveas命令格式Matlab提供直接的saveas函数可以将指定figure中的图像或者simulink中的框图进行保存,相当于【文件】中的【另存为】 % saveas(figure_handle,filename,fileformat)plot(1:10);saveas(gcf,&myfig.jpg&)复制代码4、print函数print函数原本不是用来进行图像保存了,而是操作打印机的,但是这里我们可以借用下 % print(figure_handle,fileformat,filename)x=-pi:2*pi/300:y=sin(x);plot(x,y);%Matlab根据文件扩展名,自动保存为相应格式图片,另外路径可以是绝对也可以是相对print(gcf,'-dpng','abc.png')& &%保存为png格式的图片到当前路径复制代码另外有网友向我反映,有时我们只有一个Matlab图像的fig文件,但没有该图像的相关坐标数据,那我们如何获取fig图像的数据呢,这个其实比较好办1、将那个fig文件保存到Matlab的搜索路径下,双击打开它2、在Matlab的command中输入如下内容 h=get(gcf,'chidren')data=get(h,{'xdata','ydata','zdat a'})%此时图形中所有图像的三维数据x,y,z将会以结构体的形式保存到data变量中了
一种是出来图形窗口后手动保存(这儿又可以分两种):
1 直接从菜单保存,有fig,eps,jpeg,gif,png,bmp等格式。
2 edit------〉copy figure,再粘贴到其他程序。
另一种是用命令直接保存(这里也有两种):
1&用saveas命令保存图片。
saveas的三个参数:
(1)图形句柄,如果图形窗口标题栏是&Figure 3&,则句柄就是3.
(2)文件名。
(3)单引号字符串,指定存储格式。
saveas(gcf,['D:\MATLAB7\work','yanbao',num2str(k),'.jpg']);
2&使用plot函数后紧接着用print函数。
print的三个参数:
(1)图形句柄,如果图形窗口标题栏是&Figure 3&,则句柄就是3.
(2)单引号字符串,指定存储格式。
用gcf可以获取当前窗口句柄。
png格式:'-dpng'
jpeg:&&&&'-djpeg',
tiff: '-dtiff'
bmp: '-dbitmap'
(3)文件名。
&& x=-pi:2*pi/300:&& y=sin(x);&& plot(x,y);&& print(gcf,'-dpng','abc.png')&&&% 保存为png格式的图片。
&& figure(2)&&&&&&&&&&&&% 新建一个句柄为2的图形窗口。&& plot(x,cos(x));&&&&% 在句柄为2的图形窗口上画图。&& grid&& print(2,'-djpeg','C:\abc.jpeg'); %将句柄为2的图形保存为jpeg/jpg格式的图片,文件名为'C:\abc.jpeg'。他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)matlab中如何任意选取一个矩阵的任意几行几列_百度知道
matlab中如何任意选取一个矩阵的任意几行几列
我有更好的答案
  通过A函数实现,比如:  提取40-82行,列数是1-85 。  x=A(40:82,1:85)。  data函数说明:  提取1-10000行,第1列全部  x=data(1:10000,1)。
%第三行b =
22&& c=a(:;& b=a(3,
请问如果选取的行和列都是不定的,并且选几行几列也是任意的,不一定是一列或一行,要如何实现呢
用随机数作为indexmtx=magic(5);a=randperm(5);
%产生随机行、列数目index=a(1:2);temp1=randperm(5);
row=sort(temp1(1:a(1)))temp2=sort(randperm(5));col=sort(temp2(1:a(2)))m1=mtx(row,:)%按行组合m2=mtx(:,col)%按列组合
本回答被提问者和网友采纳
假设有矩阵A A(1,:)表示第一行的元素 A(:,1)表示第一列 依次类推
如果选取的行和列都是不定的呢,并且选几行几列也是任意的,不一定是一列或一行,这有什么命令可以实现吗
你是想选某几个行或列组成新矩阵吗?
嗯,是的,新矩阵的大小是不定的,该怎么实现呢
为您推荐:
其他类似问题
matlab的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。matlab 中如何将unit8转成double型_百度知道
matlab 中如何将unit8转成double型
matlab 中如何将unit8转成double型
我有更好的答案
Function '把图像数组I1转换成double精度类型;如果不转换,在对uint8进行加减时会产生溢出,可能提示的错误为。因此可以通过语句I2=im2double(I1) ; is not defined for values of class 'uint8'再给你几条语句,希望对你有帮助:im2double():将图像数组转换成double精度类型im2uint8():将图像数组转换成unit8类型 im2uint16()在矩阵中使用的数据类型是*&#39
采纳率:22%
double(A)。是uint8不是unit8。
为您推荐:
其他类似问题
您可能关注的内容
matlab的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 matlab 判断矩阵类型 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信