精华内容
下载资源
问答
  • 关于matlab中bitget函数使用规则的一次小探索1、问题提出2、查阅资料3、硬着头皮的探索4、归纳5、结论 在用matlab进行数字图像处理编程仿真时同学问到了我bitget函数,不巧,对出现的问题我也十分不清楚(问题应该很...

    关于matlab中bitget函数使用规则的一次小探索

    在用matlab进行数字图像处理编程仿真时同学问到了我bitget函数,不巧,对出现的问题我也十分不清楚(问题应该很简单但奈何我水平颇羞),上网查阅资料后,有些许明朗,遂决定总结一下,记录分享于此。

    1、问题提出

    temp是一个10*10矩阵:

    temp =
    
      10×10 uint8 矩阵
    
        64    49    45    40    45    66    86    78    60    40
        43    43    41    37    40    41    49    44    45    39
        40    40    41    39    42    41    40    38    36    36
        39    38    39    39    45    38    42    42    40    47
        38    37    37    36    39    41    47    62    53    42
        36    35    37    37    57    48    75    94    87    71
        36    36    40    43    51    68   113   139   125   116
        38    56    48    53    72   102   140   176   175   153
        31    64    65    50    66    96   153   186   188   171
        29    41    68    50    39    54   141   189   188   183
    

    在读取此矩阵低两位时应用了以下语句:

    bitget(temp,1:2)%希望输出矩阵每个元素低二位                     (1)
    

    程序报错:
    在这里插入图片描述
    此处“对于各个输入的大小必须相同”很不理解,因为:
    将语句(1)改为以下语句时程序正常运行:

    Q=bitget(temp,1)%输出低1位                   (2)
    T=bitget(temp,2)%输出低2位 
    
    
    Q =
    
      10×10 uint8 矩阵
    
       0   1   1   0   1   0   0   0   0   0
       1   1   1   1   0   1   1   0   1   1
       0   0   1   1   0   1   0   0   0   0
       1   0   1   1   1   0   0   0   0   1
       0   1   1   0   1   1   1   0   1   0
       0   1   1   1   1   0   1   0   1   1
       0   0   0   1   1   0   1   1   1   0
       0   0   0   1   0   0   0   0   1   1
       1   0   1   0   0   0   1   0   0   1
       1   1   0   0   1   0   1   1   0   1
    
    
    T =
    
      10×10 uint8 矩阵
    
       0   0   0   0   0   1   1   1   0   0
       1   1   0   0   0   0   0   0   0   1
       0   0   0   1   1   0   0   1   0   0
       1   1   1   1   0   1   1   1   0   1
       1   0   0   0   1   0   1   1   0   1
       0   1   0   0   0   0   1   1   1   1
       0   0   0   1   1   0   0   1   0   0
       1   0   0   0   0   1   0   0   1   0
       1   0   0   1   1   0   0   1   0   1
       0   0   0   1   1   1   0   0   0   1
    
    

    此处输入大小也不相同为何未报错?
    并且运行下列语句程序亦未报错:

    K>> bitget(8,1:3)  %输出8的低三位                     (3)
    
    ans =
    
         0     0     0
    

    想来或许是自己对大小相同理解有误?或许并非指输入的size相同?

    2、查阅资料

    + 通过在matlab 使用help命令得到:

    K>> help bitget
     bitget Get bit.
        C = bitget(A,BIT) returns the value of the bit at position BIT in A, 
        where A is a signed or unsigned integer array. BIT must be between 1 
        (least significant bit) and the number of bits in the integer 
        class of A e.g., 32 for UINT32s or INT32s (most significant bit). If A 
        is a double array, then all elements must be non-negative integers 
        less than or equal to intmax('uint64'), and BIT must be between 
        1 and 64.
     
        C = bitget(A,BIT,ASSUMEDTYPE) assumes A is of type ASSUMEDTYPE. If A is
        a double array, ASSUMEDTYPE can be 'int8', 'uint8', 'int16', 'uint16', 
        'int32', 'uint32', 'int64', or 'uint64' (the default). For example, 
        bitget(A,BIT,'int8') is equivalent to double(bitget(int8(A),BIT)). All 
        elements in A must have integer values within the range of ASSUMEDTYPE. 
        If A is of an integer type, then ASSUMEDTYPE must be this type.
     
        Example:
           Prove that INTMAX sets all the bits to 1:
     
           a = intmax('uint8')
           if all(bitget(a,1:8)), disp('All the bits have value 1.'), end
    

    大体说了A和bit的取值类型以及取值范围,即:

    • b = bitget(A,bit) 返回整数数组 A 中位于位置 bit 的位值。
    • 如果 A 为双精度数组,并且未指定 assumedtype,则 MATLAB® 会将 A 视为无符号的 64 位整数。
    • 如果已指定 assumedtype,A 中的所有元素必须是 assumedtype 类型范围内的整数值。
    • bit 必须介于 1(最低有效位)和 A 的整数类中的位数之间。
      仍未解决前面的疑惑,去参考页看看:
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      着重看了输入参数部分:
      在这里插入图片描述
      在这里插入图片描述
      我理解为两个输入可以是整数可以是数组,是数组时两者大小需要相同,仍不解前面的例子(2)(3)与报错所显示的输入大小必须相同.
    • 想来可能是中文理解不准确,看英文解释:
      在这里插入图片描述
      即:

    A:

    • Input values, specified as an array. A can be a scalar or an array of the same size as bit.

    bit:

    • Bit position, specified as an integer or integer array. bit can be a scalar or an array of the same size as A. bit must be between 1 (the least-significant bit) and the number of bits in the integer class of A.

    得知当bit或A为数组时,两者大小需相等。

    • 看来确实是说要size相同,但仍不解报错提示的“输入大小必须相同”,决定利用open或edit查看bitget源代码,发现无法打开。

    3、硬着头皮的探索

    查阅资料未果后,开始硬着头皮去编程探索解释:
    要求A与bit大小相同,因此创建了一个同等大小的ones作为bit输入发现与输入1时相等:

    bitget(temp,ones(10))==bitget(temp,1)
    
    
    ans =
    
      10×10 logical 数组
    
       1   1   1   1   1   1   1   1   1   1
       1   1   1   1   1   1   1   1   1   1
       1   1   1   1   1   1   1   1   1   1
       1   1   1   1   1   1   1   1   1   1
       1   1   1   1   1   1   1   1   1   1
       1   1   1   1   1   1   1   1   1   1
       1   1   1   1   1   1   1   1   1   1
       1   1   1   1   1   1   1   1   1   1
       1   1   1   1   1   1   1   1   1   1
       1   1   1   1   1   1   1   1   1   1
    

    似乎有点明白了,这好像确实是一个很简单的问题,但对于刚刚的我来说却是不简单……

    4、归纳

    由于无法查看源代码,因此自己生硬的归纳了一下:

    • bitget(A,bit) 返回整数数组 A 中位于位置 bit 的位值。即:
      • bitget( a , m : n ); 将十进制整数a转换为二进制,输出从低 m 位到 n 位的数字(注意m,n 必须介于 1(最低有效位)和 a 的整数类中的位数之间。))
      • bitget( a , bit); 将十进制整数a转换为二进制,输出低bit位数字(注意bit 必须介于 1(最低有效位)和 a 的整数类中的位数之间。))
      • bitget( array , bit); 将array中十进制整数转换为二进制,依次输出每一个二进制数的低bit位(注意bit 必须介于 1(最低有效位)和 A 的整数类中的位数之间。)
      • bit(array,array1); 将array中十进制整数转换为二进制,对应于array1以此输出array(i)中低array1(i)位。注意array和array1大小(size)需相同

    5、结论

    个人见解:关于两输入参数大小相同指的是当两个输入都是数组时大小(size)应相同而不是任何时候都应大小(size)相同

    本人系初学者,未能查看函数源代码所定义内容、上述所写仅为学习记录及学习分享,可能跟实际情况存在出入,以上皆为个人见解,如有错误,欢迎指正交流。

    欢迎关注微信公众号痕中光一起学习进步

    展开全文
  • matlab中eval函数的用法

    2014-01-14 16:56:00
    最进看大牛程序有一段 eval(['temp(:,:,ori) = bg_r' num...eval函数是以字符串的形式运行代码下面是matlab官方的注释:eval(expression) evaluates the MATLAB code in the string expression. If you use eval wit...

    最进看大牛程序有一段

     

    eval(['temp(:,:,ori) = bg_r' num2str(r) '{' num2str(ori) '};']);

     

     

    eval函数是以字符串的形式运行代码

    下面是matlab官方的注释:

    eval(expression) evaluates the MATLAB code in the string expression. If you use eval within an anonymous function, nested function, or function that contains a nested function, the evaluated expression cannot create a variable.
     

    其中一个好处就是假如我要对a1,a2,a3,a4,……,a100分别赋予1,2,3,……,100。这时eval就发挥作用了。

     for i=1:100
         eval(['a' num2str(i) '=' num2str(i)]);
     end

    当然还有其他例子,比如批量存数据或图片文件等等。

    那么开始提到的例子也就好解释了。

    注意eval中的中括号在两个以上字符串出现时一定要有,起连接作用。

    如:
    input:[‘hello’ ‘world’]

    output:helloworld

    转载于:https://www.cnblogs.com/penguins/p/3519361.html

    展开全文
  • public Matrix<byte> padarray(Matrix<byte> src, int RowPad, int ColPad) { int n = src.Rows;... Mat temp1 = new Mat(n, m + ColPad * 2, DepthType.Cv32F, 1); Matrix<byte>
    public Matrix<byte> padarray(Matrix<byte> src, int RowPad, int ColPad)
            {
                int n = src.Rows;
                int m = src.Cols;
    
                Mat temp1 = new Mat(n, m + ColPad * 2, DepthType.Cv32F, 1);
                Matrix<byte> temp1cc = new Matrix<byte>(temp1.Size);
                temp1.CopyTo(temp1cc);
    
                Mat temp2 = new Mat(n + RowPad * 2, m + ColPad * 2, DepthType.Cv32F, 1);
                Matrix<byte> temp2cc = new Matrix<byte>(temp2.Size);
                temp2.CopyTo(temp2cc);
    
                for (int i = 0; i < ColPad; i++)
                {
                    src.GetCol(i).CopyTo(temp1cc.GetCol(ColPad - 1 - i));
                    src.GetCol( m - 1 - i).CopyTo(temp1cc.GetCol( m + ColPad + i));
                }
    
                src.CopyTo(temp1cc.GetCols( ColPad, m + ColPad));
                for (int j = 0; j < RowPad; j++)
                {
                    temp1cc.GetRow(j).CopyTo(temp2cc.GetRow(RowPad - 1 - j));
                    temp1cc.GetRow(n - 1 - j).CopyTo(temp2cc.GetRow(n + RowPad + j));
                }
                temp1cc.CopyTo(temp2cc.GetRows( RowPad, n + RowPad,1));
                return temp2cc;
            }
    
    展开全文
  • ; margin-right:0pt">%绘制调制波形00101010 ... margin-right:0pt">Akk=temp(1:length(Akk));            %码元扩展 ; margin-right:0pt"> </p>
  • filemaker :把文件名与文件中函数名分开 。 filesep :文件目录分隔。 fileparts :把目标文件名拆分成字符串形式输出 。 tempdir :返回系统暂存地址名 。 tempname :返回系统暂存文件名 。 fullfile :创建...

    十一、基本文件操作函数

    1)文件创建函数

    filemaker :把文件名与文件中函数名分开 。

    filesep :文件目录分隔。

    fileparts :把目标文件名拆分成字符串形式输出 。

    tempdir :返回系统暂存地址名 。

    tempname :返回系统暂存文件名 。

    fullfile :创建文件名 

     

    2)文件打开、读取、存储函数

    open:打开文件 ---用法:open('name')

    load :将文件导入到MATLABworkspace中。loadfilename load filename X Y Z,

    load-asciifilename ,load-mat filename,load('arg1', 'arg2', 'arg3', ...)

    save:存储文件.save filename, save filename content, savefilename options

         save('filename', 'var1', 'var2', ...) 

    daqread :读数据采集工具箱(.daq)中的文件 。

             [data, time, abstime, events, daqinfo]= daqread('filename')

    uiimport :调用文件导入助手

     

    3)简单文件输入输出函数

    fopen :打开文件。

           fid = fopen(filename)

           fid = fopen(filename,permission)

    Permission值

    打开模式

    ‘r’

    只读模式

    ‘w’

    可写入模式,覆盖已有内容

    ‘a’

    可写入模式,写入数据到文件末尾

    ‘r+’

    可读写模式,

    ‘w+’

    可写入模式,覆盖已有内容

    ‘a+’

    可写入模式,写入数据到文件末尾

    ‘A’

    无自动删除添加

    ‘W’

    无自动删除写入

    fclose  关闭文件。status=fclose(fid) ,status=fclose('all')

    fprintf:以指定格式将数据写入文件 。count = fprintf(fid, format, A, ...)

    实例:

     

     
    1. x=1:0.1:2;

    2. y=[x,sin(x)];

    3. fid=fopen('sin.txt','wt');

    4. fprintf(fid,'%5.2f %5.6f\n',y);

    5. fclose(fid)

     

    fscanf :以指定格式读取文件中的内容 。A =fscanf(fid, format) , [A,count] = fscanf(fid, format, size)

    fread :读取文件中的二进制数据 。A =fread(fid, count ,precision, skip, machineformat)

    fwrite :将二进制数据写入到文件中 。

    fseek :设置文件位置指针 。status = fseek(fid,offset, origin)

    ftell :获取文件位置指针 。position = ftell(fid)

    fwind :把文件位置指针移动到文件起始位置 。fwind(fid)

    fgetl :按行读取文件内容,并删去换行符 。tline = fgetl(fid)

    fgets :按行读取文件内容,并保留换行符 。tline = fgets(fid, nchar)

    frewind :将文件指针移到文件的起始位置。 frewind(fid)

    feof :测试是否为文件的末尾 。message = ferror(fid)

    ferro :测试文件输入输出是否有错误 。message = ferror(fid,'clear') , [message,errnum] = ferror(...)

    disp :将目标文件所包含的信息以不同形式显示,如文本、数组等形式。

     disp(obj)

     

    4)电子表格操作函数

    xlsfinfo :检测文件中是否包含Microsoft Excel电子表格文件 。

       typ = xlsfinfo(filename) [typ,desc, fmt] = xlsfinfo(filename)

    xlsread :读Microsoft Excel电子表格文件中的内容 。

       num = xlsread(filename),num = xlsread(filename,sheet),num =xlsread(filename, range),num = xlsread(filename, sheet, range, 'basic')

    [num,txt,raw,X]=xlsread(filename,sheet, range, 'basic') 

    xlswrite :将数据写入Microsoft Excel电子表格文件中 。

        xlswrite(filename, M),xlswrite(filename, M, sheet, range),

        [status, message] = xlswrite(filename, ...)

    wk1finfo :检测文件中是否包含Lotus 1-2-3 WK1电子表格。

       [extens, typ] = wk1finfo(filename)  

    wk1read :读取Lotus 1-2-3 WK1电子表格文件 。

        M = wk1read(filename) ,M = wk1read(filename,r,c,range)

    wk1write :将数据写入Lotus1-2-3 WK1电子表格文件中 。

        wk1write(filename,M,r,c)

    展开全文
  • MATLAB中的plot()函数

    2018-11-15 16:38:57
    temp=157.5; a=temp ./xk; plot(xk,a); %hold on %plot(xk,a); %hold off grid minor; axis([250 1650 0 0.6]); xlabel('5级暗纹的距离'); ylabel('a的距离'); grid minor; 添加细密的网格线 grid on;添加...
  • 返回的则是灰度范围在每份灰度级的像素个数f = imread('temp.jpg'); g = rgb2gray(f); h = imhist(g, 25);bar(horz, z, width) 绘制条形图horz 表示 水平增量,需要与z的行数相同。 z 表示要显示的条形图的数
  • 今天研究C# 调用 matlab 编译的动态库,在将简单加法运算在C# 中调用成功后,满怀开心的心情进一步的调用matlab中regress 函数,结果灾难的报错了,经过半天的奋斗各种百度,谷歌,未能找到解决方案。 .m文件如下:...
  • matlab函数小结

    2013-11-07 09:50:00
    算法步骤如下: 1、mat2gray是将输入数据F归一... 4、对于数据F中介于最大值和最小值之间的数据是这样处理的:假设temp1为介于最大值和最小值的某一值,经过mat2gray 变换后变为:temp_last=(temp1-min(F))*det;
  • 【转】求matlab三维数组转置函数

    千次阅读 2019-05-09 11:20:34
    我需要读入一个ps0.mat文件,我使用 load ps0.mat ,读到工作空间的temp中temp的value值是<3 * 640 * 480 unit8> ,我用imshow(temp)却报错,不知道有没有三维数组转置的函数或者别的方法打开,...
  • Matlab读txt的几种函数

    2014-05-21 21:57:08
    实验室的项目很多要与txt交互,研究所比较喜欢搞这个,有的时候还和一些比较怪的文件格式如.Jin交互,与这些乱七八糟的东西交互与和txt交互差不多,主要的函数有以下几种: temp=dlmread(get(handles.path1,'...
  • 参考链接:https://www.computationalimaging.cn/2020/01/matlab-train-test-val-inedx-number.html 功能:将[1,N]之间的整数随机抽1%写到val; 1%写到test; 其余写到train N = 10000; A = [1:N]; A_temp ...
  • 1、使用fgetl和fgets函数读取文本文件数据 从文本文件读取一行数据 data=fgetl(fileID) data=fgets(fileID) temp.txt Day1 temp1=13 temp2=25 temp3=16 Day2 temp1=14 temp2=25 temp3=16 Day3 ...
  • MATLAB中AR模型功率谱估计中AR阶次估计的实现-psd_my.rar (最近看了几个关于功率谱的问题,有关AR模型的谱估计,在此分享一下,希望大家不吝指正) (声明:本文内容摘自我的毕业论文——心率变异信号的预处理...
  • 之前写过一个利用MATLAB GUI实现串口通信,并在界面上实时绘图,上次的实现是数据存储在数组,eg:a=[a temp];等,详细实现可见Matlab GUI上位机界面实现串口通信 当数据存储在txt文档中,实时绘图更新一般采用...
  • 本文附上一个例子代码,很值得学习,关于文件创建,读取的一些简单基础的语法,个人觉得很值得学习,另外matlab中eval函数,也应该值得学习下,真的很好的函数,功能强大。 上代码: clc; clear all; % 先判断目录...
  • filter()和map()是Python内置的两个函数,使用起来有点像MATLAB中的向量化筛选和调用函数,下面来介绍一下使用方法。 filter() filter函数有两个参数,第一个参数可以是函数或者None,第二个参数一般是列表,如果是...
  • matlab gui的函数开始便是function XX(varargin);个人理解为函数参数的传递。所以在A.gui,在打开子界面是这么写 B(avr1 , avr2 , avr3 , avr4 , ......); guide(B.fig); 然后在B.FIG获取变量时可以再...
  • matlab保存图片

    2021-04-09 17:01:06
    函数功能:将图像数据写入到图像文件,存储在磁盘上 参数介绍:其中,A是图像数据,filename是保存的图像名称,fmt是要保存的图片格式(如bmp, jpg, png等) 代码示例: imwrite(temp,'before.jpg','jpg') ...
  • matlab 对数组随机不放回采样

    千次阅读 2017-02-22 11:35:26
    使用matlab实现随机采样的程函数如下 将函数的m文件放在当前目录下,即可在其他 m 脚本调用词函数进行不放回随机采样。 function sample = sampling( Lst, m ) temp = Lst; l = length(Lst) sample = [] %从...
  • 新建一个窗口应用程序,选择GUIDE 编辑界面 ...在数值键0~9加入代码,以下为按键1的callback函数中添加的代码 temp = get(handles.textResult,'String'); temp = strcat(temp,'1')...
  • 为了避免和MATLAB 7.0版本的新遗传算法与直接搜索工具箱在函数名上的冲突 ,这里将主函数名改为gaopt.m,相应的函数调用语句也作了适当的改动。下载地址: http://www.ie.ncsu.edu/mirage/GAToolBox/gaot/ ...
  • 第二部分的资源名为:高等应用数学问题的MATLAB求解光盘 part2:包含书开发函数,使用资源及例题全部代码 光盘使用说明 本光盘是薛定宇和陈阳泉所著《高等应用数学问题的MATLAB求解》一书的配书光盘。本光盘的...
  • 为了避免和MATLAB 7.0版本的新遗传算法与直接搜索工具箱在函数名上的冲突 ,这里将主函数名改为gaopt.m,相应的函数调用语句也作了适当的改动。下载地址: http://www.ie.ncsu.edu/mirage/GAToolBox/gaot/ ...
  • 第一部分的资源名为:高等应用数学问题的MATLAB求解光盘 part1:包含书CAI教学材料 光盘使用说明 本光盘是薛定宇和陈阳泉所著《高等应用数学问题的MATLAB求解》一书的配书光盘。本光盘的著作权归作者所有。清华...
  • matlab自动给变量命名

    千次阅读 2019-03-07 13:03:59
    方法1 通过eval函数实现 举个例子 clear %%%%%%%%%%%%%%%%%%%%%%%%%%... %自动给变量赋名和赋值,从Temp矩阵提取温度和电阻值 eval(['T',num2str(i),'=','R(i,:)',';']); end T1 T2 T3 在上面的例子,matla...
  • 首先获取表达式: biaodashi=get(handles.edit18,'string'); 使用eval函数执行字符串形式数学表达式 temp=eval(biaodashi);
  • %函数开始 function [outputArg1,outputArg2] = InsertionSort(inputArg1,inputArg2) %待排序矩阵,名为sortarray sortarray=[5,3,1,-1,-7,4,9,-6,8,10,4]; %size()函数返回的是x矩阵的...%temp中存放的是待..
  • MATLAB的function文件

    2015-04-19 14:25:32
    我下面的MATLAB程序,我想输出三个结果,为啥结果只会出现一个,就是b,不会出现其他的结果呢?不知道是什么原因,请大神帮帮我,谢谢了。 function[b,e,h]=lvboshibie(a) a=imread('lena.bmp'); %figure;imshow(a);...
  • 大家帮忙看看,我将matlab中m文件打包成jar,引入jar包后在 java project能正常运行, 但在Android project就出错,具体错误信息: FATAL EXCEPTION: main java.lang.ExceptionInInitializerError at MotionBlur....

空空如也

空空如也

1 2 3
收藏数 54
精华内容 21
关键字:

matlab中temp函数

matlab 订阅