小编gno*_*ice的帖子

在没有换行符的情况下显示MATLAB中的信息

有没有办法在没有结束换行的情况下从MATLAB程序输出/显示信息?

我的MATLAB程序偶尔会输出一个数字.在输出数字之间,程序会执行许多其他操作.这是一个主要用于表示某种进展的构造,每次都不能有换行,只是为了让它对用户更具可读性.这大约是我正在寻找的:

Current random seed:
4 7 1 1 
Run Code Online (Sandbox Code Playgroud)

如果程序仍然像以前一样做,那么程序的下一个输出将在同一行上.

我已经阅读了有关disp,sprintf和格式的文档,但还没有找到我正在寻找的内容.这并不意味着它不存在.;)

formatting matlab printf disp

17
推荐指数
1
解决办法
1万
查看次数

如何在MATLAB编辑器中启用自动字完成?

我可以通过按Tab键在MATLAB命令提示符下使用自动字完成,但是在使用m文件的编辑器时我不能这样做.有没有办法在编辑器中使用制表符完成?

matlab editor tab-completion

16
推荐指数
3
解决办法
2万
查看次数

80位扩展精度数据类型有哪些应用/优点?

是的,我的意思是说80位.这不是一个错字......

我对浮点变量的经验总是涉及4字节的倍数,如单音(32位),双音(64位)和长双音(我已经看到它被称为96位或128位).这就是为什么当我遇到一些代码来读取和写入AIFF(音频交换文件格式)文件时遇到80位扩展精度数据类型时我有点困惑:选择了一个扩展精度变量来存储采样音轨的速率.

当我浏览维基百科时,我发现上面的链接以及IEEE 754-1985标准摘要中的80位格式的简要提及(但不在IEEE 754-2008标准摘要中).看来,在某些架构上,"扩展"和"长双"是同义词.

我没有遇到的一件事是使用扩展精度数据类型的特定应用程序(当然,AIFF文件采样率除外).这让我想知道:

  • 有没有人遇到过扩展精度对某些编程应用来说是必要/有益的情况?
  • 80位浮点数有什么好处,除了显而易见的"它比双倍的精度稍高但比大多数长双精度的实现更少"?
  • 它的适用性正在减弱吗?

floating-point ieee-754

15
推荐指数
3
解决办法
5440
查看次数

如何在MATLAB中创建一个"空"匿名函数?

在MATLAB中调试时,我使用匿名函数进行诊断打印.例如,

debug_disp = @(str) disp(str);
debug_disp('Something is up.')
...
debug_disp = @(str) disp([]);
% diagnostics are now hidden
Run Code Online (Sandbox Code Playgroud)

使用disp([])"狼吞虎咽"似乎对我来说有点脏; 有更好的选择吗?明显的(?)方法不起作用:

debug_disp = @(str) ;
Run Code Online (Sandbox Code Playgroud)

我认为这可以用于其他功能语言应用程序,而不仅仅是诊断打印.

matlab anonymous-function

15
推荐指数
2
解决办法
8706
查看次数

如何将矢量转换为单元格数组?

我有一个列矢量我想转换为单元格数组,如:

A = rand(10,1);

B = cell(10,1);
for i=1:10
    B{i} = A(i);
end

B = 
    [0.6221]
    [0.3510]
    [0.5132]
    [0.4018]
    [0.0760]
    [0.2399]
    [0.1233]
    [0.1839]
    [0.2400]
    [0.4173]
Run Code Online (Sandbox Code Playgroud)

如果没有明确的for循环,我怎么能这样做呢?我试过了:

B{:} = A(:)
Run Code Online (Sandbox Code Playgroud)

[B{:}] = deal(A)
Run Code Online (Sandbox Code Playgroud)

没有运气......

如果可能的话,我怎么能对矩阵做同样的事情,即单元格中的每个元素本身?

matlab vectorization

15
推荐指数
1
解决办法
2万
查看次数

如何在Octave中仅计算矩阵乘积的对角线?

Octave有没有办法只计算和存储矩阵乘积的对角线?

基本上喜欢这样做: vector = diag(A*B);

我不关心A*B除了对角线上的任何值.矩阵大小是围绕80k x 1212 x 80k,所以即使我不关心速度/额外的内存它只是惯于适合在RAM中.

奇怪的是,因为Octave是一个包含大量数据集和对角线的包非常重要,所以它应该是可能的.

matlab matrix octave matrix-multiplication diagonal

14
推荐指数
2
解决办法
7913
查看次数

如何在MATLAB/Octave中获得实数整数溢出?

我正在为MATLAB/Octave中的一些VHDL代码开发一个验证工具.因此,我需要生成"真正"溢出的数据类型:

intmax('int32') + 1
ans = -2147483648
Run Code Online (Sandbox Code Playgroud)

稍后,如果我可以定义变量的位宽,那将会很有帮助,但现在这不是那么重要.

当我构建一个类似C的例子时,变量增加直到它小于零,它会永远旋转:

test = int32(2^30);
while (test > 0)
    test = test + int32(1);
end
Run Code Online (Sandbox Code Playgroud)

我尝试的另一种方法是自定义"溢出" - 例程,每次更改数字后都会调用它.这种方法非常缓慢,不实用,根本不适用于所有情况.有什么建议?

matlab overflow integer-overflow

14
推荐指数
2
解决办法
7912
查看次数

MATLAB:在黑白图像上画一条线

如果已知起点和终点坐标,在MATLAB中在黑白(二进制)图像上绘制线条的最佳方法是什么?

请注意,我不是要添加注释行.我希望这条线成为图像的一部分.

matlab image image-processing line matlab-cvst

14
推荐指数
3
解决办法
2万
查看次数

如何将2D二进制矩阵显示为黑白图?

我有一个2D二进制矩阵,我想显示为黑白图.例如,假设我有一个4乘4的矩阵,如下所示:

1 1 0 1
0 0 1 0
1 1 0 1
1 0 0 0
Run Code Online (Sandbox Code Playgroud)

如何将其绘制为黑白矩阵?我的一些输入二进制矩阵的大小为100乘9,所以理想情况下我需要一个可以推广到不同大小矩阵的解决方案.

matlab plot matrix

14
推荐指数
1
解决办法
3万
查看次数

如何在MATLAB数据光标中以更高的精度显示数字?

我有精确损失的问题.我使用以下代码将CSV文件中的一组值导入MATLAB 7:

function importfile(fileToRead1)
%#IMPORTFILE(FILETOREAD1)
%#  Imports data from the specified file
%#  FILETOREAD1:  file to read

DELIMITER = ',';
HEADERLINES = 0;

%# Import the file
rawData1 = importdata(fileToRead1, DELIMITER, HEADERLINES);

%# For some simple files (such as a CSV or JPEG files), IMPORTDATA might
%# return a simple array.  If so, generate a structure so that the output
%# matches that from the Import Wizard.
[~,name] = fileparts(fileToRead1);
newData1.(genvarname(name)) = rawData1;

%# Create new variables in the base …
Run Code Online (Sandbox Code Playgroud)

precision matlab plot datatip

14
推荐指数
2
解决办法
5万
查看次数