matlab sort三维_matlab用法总结

a=[ ]

if isempty(a)

a=[2,4,3,5,2,3,5;2,3,4,7,5,4,7];

m=max(a(1,:));

index=find(a(1,:)==m);

max_array=a(1,index);

比如有矩阵A=[ 1 1 1;

2 2 2;

3 3 3;

4 4 4;]

行向量B=[3 3 3]

则: B在A的第  3 行

A=[ 1 1 1;

2 2 2

3 3 3

4 4 4];

B=[3 3 3];

find(ismember(A,B,'rows'))

或:[ind,loc] = ismember(A,B,'rows');

a = {'A','B','A','C','D'};

b = {'A'};

[c1,c2] = ismember(b,a)

追问:

请问,假如a很长,而我不知道a里面有几个'A呢?'

追答:

a = {'A','B','A','C','D'};

b = {'A'};

n = 1:length(a);

c = arrayfun(@(x) ismember(b,a(x)),n);

c = n(c)

c = 1 3

xa = -2:0.2:2;

ya = xa;

[x,y] = meshgrid(xa,ya);

% calculate z data

z = x.*exp(-x.^2 - y.^2);

mesh(x,y,z);

figure;

surf(X,Y,Z)

reshape函数重新调整矩阵的行数、列数、维数

close all; clear; clc;

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

B = reshape(A, 2, 6) % 2 by 6

% C = reshape(A, 2, 4) % error

% D = reshape(A, 2, 10) % error

E = reshape(A, 2, 3, 2) % 2 by 3 by 2

注意:reshape函数对原数组的抽取是按照列抽取的(对原数组按列抽取,抽取的元素填充为新数组的列)

运行结果:

A =

1 2 3

4 5 6

7 8 9

10 11 12

B =

1 7 2 8 3 9

4 10 5 11 6 12

E(:,:,1) =

1 7 2

4 10 5

E(:,:,2) =

8 3 9

11 6 12

[x,y,z] = sphere(99);

figure

mesh(x,y,z)

index1 = sort(floor((100*rand(1,10)+1)));

index2 = sort(floor((100*rand(1,10)+1)));

figure

x = x(index1,index2);

y = y(index1,index2);

z = z(index1,index2);

mesh(x,y,z)

save A.txt A -ascii -double 只能是nxn 的,多维报错

A=load('A.txt', 'ascii'),只能是数值型,字符型报错

字符型可以用importdata存为cell,再用cell2mat转为char型数组

fileDir=importdata('fileDir.txt');

fileDir=cell2mat(fileDir);

9.MATLAB对于文本文件(txt)数据读取的技巧总结(经典中的经典)

普通数值空格隔开的可以用

A=load('A.txt', 'ascii')

文本的可以用

D = importdata('sample_file2.txt')

10.Matlab批量读取一个文件夹里的txt文件

比如说在E:\new下有一系列txt文件,文件名符合matlab变量名的命名规则,并且没有temp.txt文件,每个文件有两列,以空格分割,第一列是字符串,第二列是浮点数字,要读取第二列的浮点数字为数组并以文件名为变量名。

file=dir('E:\new\*.txt');

for n=1:length(file)

temp=dlmread(['E:\new\',file(n).name],' ',0,1);

eval([file(n).name(1:end-4),'=temp;'])

end

fileDir='C:\Users\Desktop\test\';

file=dir(fileDir);

for n=1:length(file)

filename=file(n).name

%过滤掉特殊文件

if(strcmp(filename,'.')||strcmp(filename,'..'))

continue;

end

%判断是否是文件夹,是的话查看下一文件(夹)名

tp=[fileDir,filename];

if(isdir(tp))

continue;

end

end

11.matlab创建文件夹

new_folder = 'C:/test'; % new_folder 保存要创建的文件夹,是绝对路径+文件夹名称

mkdir(new_folder); % mkdir()函数创建文件夹

12.关于Matlab字符串数组char array的赋值补充空格的问题

%a是一个字符串数组 初始化如下

a(1,1:length('bob'))='bob';

a(2,1:length('ryan '))='ryan ';

a(3,1:length('richard'))='richard';

13.matlab界面把怎么保存txt文件到指定路径

fid=fopen(fpath,'wt');%%%%用它就可以写啦

14.Matlab中如何判断某文件夹下的某个文件是否存在

infoldername = 'E:/TLD_Tracking/zk00006-OpenTLD-8a6934d/00057_002_jpg/';

infilename = [infoldername, 'image.jpg']; % 文件的路径

sgc_exist = exist(infilename, 'file');

15.Matlab 命令窗口的"<

16.matlab从文件夹名中获得该文件夹下所图像文件名

function [s,nameC]=get_FileNameFromFolderPath(path)

% 函数调用:[s,nameC]=get_FileNameFromFolderPath(path)

% 函数功能:从文件夹名中获得该文件夹下所图像文件名

% 函数输入:path 为文件夹路径

% 函数输出:s 表示状态,当为0时表示正确

% nameC 表示获得的图像名的胞体cell

% 函数历史:v0.0 @2013-01-27 created by Aborn

cmd = sprintf('dir %s /B >%snamelist.txt',path,path); % 获得当前concept的所有图像的文件名

[s,r]=dos(cmd);

fileName = sprintf('%snamelist.txt',path);

fileID = fopen(fileName);

C = textscan(fileID,'%s');

fclose(fileID);

nameAll = C{1,1};

order = 1;

nameC = {};

for i=1:size(nameAll,1)

if strcmp(nameAll{i,1}(1,end-3:end),'.jpg')==1 % 找到'.jpg'文件名

nameC{order,1} = nameAll{i,1};

order = order + 1;

end

end

17.matlab 如何获取文件名 [转] 和 拷贝文件/matlab中哪个函数提取文件路径和名称

18.matlab中文件的复制

http://blog.sina.com.cn/s/blog_a6be7fa20101a34h.html

function copy

% 从father目录中复制指定类型的文件到目录s中

father='H:\前期测试\3\'; %指定类型的文件所在的目录

s='H:\前期测试\3.3\'; %复制文件的目标目录

subDir=dir(father); %求目录的子目录

len = length(subDir); %求子目录的长度

disp('begin copy files..');

for i=3:len

imgNames = dir(strcat(father,subDir(i).name,'\','*.JPEG'));

a=[s,subDir(i).name,'\'];

mkdir([s,subDir(i).name])

for j=1:20 %复制的文件个数

copyfile([father,subDir(i).name,'\',imgNames(j).name],a);

end

end

disp('end');

end

19.数字位数补齐 比如1 补成3位001 10补成010 如何实现

http://www.ilovematlab.cn/thread-206419-1-1.html

http://zhidao.baidu.com/link?url=flV0mNrtN2GcpDLqj3aM6sS8mp5bGqTg2M1IUzCx0uLUKiLBiDLNEeUNjlIi3dWDc7yhxlzQdP88ri12jP8VYZeLWxa4SrnB9Rkumj8jhR3

image = cell(19, 1);

for k = 0:18

str = sprintf('%03i.bmp', k);

image{k+1} = imread(str);

end

20.Matlab中怎样循环处理并将每次结果以循环次数命名保存

http://zhidao.baidu.com/link?url=4ccQwjzabg--ki0nXKykg_Anndo2sLCcixYkKIyWpMTtWa16OkdNnrnLMjn2Gg-LMJIqGf4Y7qm3ZBpy32xy3_

for i=1:128

img = dicomread('tomo.dcm', 'frames', i);

dicomwrite(img, '[int2str(i) '.dcm']')

end

21.matlab 指定的行列交换 http://blog.csdn.net/lsg32/article/details/8560740

a = rand(3,3)

a =

0.7577 0.6555 0.0318

0.7431 0.1712 0.2769

0.3922 0.7060 0.0462

>> a(:,[1,3])=a(:,[3,1])

a =

0.0318 0.6555 0.7577

0.2769 0.1712 0.7431

0.0462 0.7060 0.3922

上面是将a的第1列与第3列互换

下面是将上面的a的第1行与第3行互换

>> a([1,3],:) = a([3,1],:)

a =

0.0462 0.7060 0.3922

0.2769 0.1712 0.7431

0.0318 0.6555 0.7577

22.matlab中怎样将uint8转化成double型

a=randint(5,10,[1 300])%产生5行10列1-300的整数

b=uint8(a)%将a其转化成uint8

d=double(b)%将b其转化成double

23.在matlab中写入ASCII文件Write matrix to ASCII-delimited file

save *.txt x -ascii

或者

dlmwrite(filename, M)

dlmwrite(filename, M, 'D')

dlmwrite(filename, M, 'D', R, C)

dlmwrite(filename, M, 'attrib1', value1, 'attrib2', value2, ...)

dlmwrite(filename, M, '-append')

dlmwrite(filename, M, '-append', attribute-value list)

filename——输出文件名,可为txt,dat,csv等格式

M——写入文件的变量名

‘D’——数据分隔属性,默认为“,”逗号;“\t”表示没有分隔符号

R, C——输入写入从第R行,第C列开始;注意:此时要制定分隔符,否则会报错。

dlmwrite('myfile.txt', M, 'delimiter', '\t', 'precision', 6)

type myfile.txt

0.893898 0.284409 0.582792 0.432907

0.199138 0.469224 0.423496 0.22595

0.298723 0.0647811 0.515512 0.579807

0.661443 0.988335 0.333951 0.760365

24.Matlab函数sortrows:按升序排列行

B = sortrows(A)

B = sortrows(A, column)

第一种和第二种用法的区别在于,sortrows(A)将类似按照字典序排列,而指定了column时,各行只根据指定列为标准来排序,不考虑其他列的顺序问题。

[B, index] = sortrows(A)

这一用法同时返回一个索引向量。如果A是一个列向量,则B = A(index);如果A是一个m*n的数组,则B = A(index, :)。

A = magic(3)

B = sortrows(A)

C = sortrows(A)

[D, I] = sortrows(A)

运行结果如下:

A =

8 1 6

3 5 7

4 9 2

B =

3 5 7

4 9 2

8 1 6

C =

3 5 7

4 9 2

8 1 6

D =

3 5 7

4 9 2

8 1 6

I =

2

3

1

25.matlab中sort函数的用法

可以用sort将参量中的元素按升序或降序排列。

B = sort(A)   %沿着输入参量 A的不同维的方向、从小到大重新排列 A中的元素。A 可以是字符串的、实数的、复数的单元数组。对于 A 中完全相同的元素,则按它们在 A 中的先后位置排列在一块;若 A 为复数的,则按元素幅值的从小到大排列,若有幅值相同的复数元素,则再按它们在区间[-π ,π ]的幅角从小到大排列;若 A 中有元素为NaN,则将它们排到最后。若 A为向量,则返回从小到大的向量,若A为二维矩阵,则按列的方向进行排列;若A为多维数组,sort(A)把沿着第一非单元集的元素像向量一样进行处理。

B=sort(A,dim) %沿着矩阵A中指定维数dim方向重新排列A中的元素。

[B,IX]=sort(A); %其中IX是一个大小等于size(A)的数组,其每一列是A中列向量的元素相对应的置换位置记号。

A = [ 3 3 5

0 4 2 ];

sort(A,1) %纵向排列

ans =

0 3 2

3 4 5

sort(A,2) %横向排列

ans =

3 3 5

0 2 4

A = [-1.9, -0.2, 3.1415926, 5.6, 7.0, 2.4+3.6i];

[B1,INDEX] = sort(A)

计算结果为:

B1 =

Columns 1 through 4

-0.2000 -1.9000 3.1416 2.4000 + 3.6000i

Columns 5 through 6

5.6000 7.0000

INDEX =

2 1 3 6 4 5

26.


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部