小猪猪的matlab学习笔记

目录

1  删除cell数组中的NaN数据 

​编辑

2 删除元组里面的空数据

​编辑

 3 数据格式转换

4 输出视频的音乐

5 含有NaN的相关数据处理

6 cell索引查找

matlab如何输入较长的字符串:matlab字符串换行

7、MATLAB获取当前路径的三种方法:

8、MATLAB怎么声明NaN数组:

9.多坐标轴(参考:Matlab关于函数patch的用法 – MATLAB中文论坛)

10 绘制渐变曲线

11、matlab绘制椭球

12、怎么获取字段中的数值


1  删除cell数组中的NaN数据 

A(cellfun(@(x) any(isnan(x)),A))=[];

如果NaN用0替换

A(cellfun(@(x) any(isnan(x)),A))={'0'}

2 删除元组里面的空数据

indx(find(~cellfun('isempty', indx)))

 3 数据格式转换

   cell2mat:将cell转换为mat的char型
   str2num:将char转换为double型
   cellstr:将char转还为cell
   num2str:将double转换为char
   num2cell:将double转换为cell
   int2str:将int转换为char型
   datestr:将datetime转换为char型

4 输出视频的音乐

  因为喜欢看抖音短视频,喜欢视频中的音乐,想提取视频中的音乐,matlab代码如下

[y, Fs] = audioread('蔡徐坤.mp4');%并返回样本数据 y 以及该数据的采样率 Fs
audiowrite('蔡徐坤.wav',y, Fs);%输出wav音频文件文件
sound(y,Fs)%播放音乐

5 含有NaN的相关数据处理

    求和:nansum
    平均:nanmean
    标准差:nanstd
    isnan判断数值型数组是否为空,返回值1代表为空,0代表不为空

6 cell索引查找

第一种情况

>> a={2,3,4,5,6,7,10,11,10};
>> idx=find(a==10)
未定义与 'cell' 类型的输入参数相对应的运算符 '=='。
 
>> idx=find([a{:}]==10)

idx =

     7     9

通过[a{:}]转换数组,后用find查找索引

注意:cell数组只能数值型或者单字符的数据 有效

第二种情况

>> a={'1','error','3','4','error','7'};
>> idx=find(strcmp(a,'error'))

idx =

     2     5

注意:strcmp()方法能够同时检索字符字符串

第三种情况

>> a={'1','error','3','4','error','7'};
>> idx = find(ismember(a,'error'))

idx =

     2     5

注意:

能够检索字符串单字符,但不能够检索数值类型的数据,也不能对包含混合数据类型(同时包含数值和字符或字符串)的cell进行检索。
速度较慢

具体参考

matlab如何输入较长的字符串:matlab字符串换行

str=['zzzzzzzzzzz',...
    'wwwwwwwwwww']

7、MATLAB获取当前路径的三种方法:

1.方法一:pwd

>> pwd

ans =

    'D:\matlabcode'

2.方法二:cd


>> cd

D:\matlabcode

 3.方法三:获取what结构体的path数据

>> s=what;
>> p=s.path

p =

    'D:\matlabcode'

8、MATLAB怎么声明NaN数组:

zeros(5,3)*NaN

9.多坐标轴(参考:Matlab关于函数patch的用法 – MATLAB中文论坛

str={'欢迎你';'北京';'朋友'};
h=axes('Position',[0.1 0.1 0.9 0.9]);
h1=axes('Position',[0.23 0.15 0.9 0.9]);
axes('Position',[.35 .35 .7 .9]);      %创建两个坐标轴
text(.025,.6,str(1),'FontSize',11);           %在当前(第二个)坐标轴上标注
set(gcf,'CurrentAxes',h)                        %返回到第一个坐标轴的控制
text(.025,.6,str(2),'FontSize',11);             %在第一个坐标轴上标注
set(gcf,'CurrentAxes',h1) 
text(.025,.6,str(3),'FontSize',11);

10 绘制渐变曲线

clear,clc;
x=1:0.1:20;
y=sin(x);
patch([x NaN],[y NaN],[y NaN],'edgecolor','flat','facecolor','none')
colormap jet
colorbar

11、matlab绘制椭球

clear,clc
a=6;
b=3;
c=3;
[x, y, z] = ellipsoid(0,0,0,a,b,c,50);
figure
h=surf(x, y, z,'FaceAlpha',0.5,'EdgeColor','none');
axis equal

 

12、怎么获取字段中的数值

str='猪猪侠21.jpg';
A=isstrprop(str,'digit');
B=str(A);
C=str2num(B)

 

 

13 医学工具箱网址下载    

13 非连续数据分割

function data=find_inter(x)
% x=[1 ...
%     4 5 ...
%     7 8 9 ...
%     11 12 13 ...
%     20 21 22 23 ...
%     25];
% x=num;
if length(x)==1
    data=cell(1,1);
    data{1}=x;
else
    inter=find(diff(x)~=1);
    data=cell(1,length(inter)+1);
    if ~isempty(inter)%不为空的情况下就是单一个数据列,
        for i=1:length(inter)+1
            if i==1
                data{1}=x(1:inter(1));
            elseif i==length(inter)+1
                data{i}=x(inter(i-1)+1:end);
            else
                data{i}=x(inter(i-1)+1:inter(i));
            end
        end
    else
        data{1}=x;
    end
end
end

posted on 2020-03-10 01:13  好玩的MATLAB  阅读(0)  评论(0编辑  收藏  举报  来源

导航