如何在MATLAB中列出/查看/清除持久变量?我希望看到持久变量不是针对特定函数,而是针对目前在内存中具有持久变量的所有函数.
我尝试过的事情一样whos('persistent'),并whos('global')没有运气.
我想知道是否有一种简单的方法来检查两个Matlab对象是否相等。我有
A = Section(1, Point(0, 0), Point(0, 0));
B = Section(1, Point(0, 0), Point(0, 0));
if(A == B) % I know this is incorrect, but how could I fix it up?
fprintf('Equal\n');
else
fprintf('Not Equal\n');
end
Run Code Online (Sandbox Code Playgroud)
实例化两个部分后,我想检查它们是否相同(在上述情况下它们相等)。我该怎么办?
我想在Matlab中为小值(例如1e-18)评估逆学生t-分布函数.自由度是2.
不幸的是,Matlab回归NaN:
tinv(1e-18,2)
NaN
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用R的内置函数:
qt(1e-18,2)
-707106781
Run Code Online (Sandbox Code Playgroud)
结果是明智的.为什么Matlab不能评估这个小值的函数?Matlab和R的结果与1e-15非常相似,但对于较小的值,差异相当大:
tinv(1e-16,2)/qt(1e-16,2) = 1.05
Run Code Online (Sandbox Code Playgroud)
有谁知道Matlab和R的实现算法有什么不同,如果R给出正确的结果,我怎么能在Matlab中有效地计算较小值的逆t-分布?
在不使用质量矩阵的情况下,ode 求解器ode45可以求解 y'=f(t,y)。
但是对于涉及“质量”矩阵的问题,在 ode 求解器中有一个质量矩阵选项,M(t,y)y'=f(t,y)。
“质量”矩阵究竟是什么?这个术语是否来自质量弹簧系统振荡的质量?我在文档中找不到关于此的示例代码。此外,似乎我可以在 y'=f(t,y) 等式中的 f(t,y) 中对有关 t 和 y 的信息进行编码。在什么情况/示例中会出现 M(t,y)y'=f(t,y) 需要 M(t,y) 的地方?
我在2D中有一堆点,我知道它的值,并且我想通过它们拟合三次样条来使用MATLAB插入其他一些数据.
我的代码看起来像:
fitobject = fit(x,y,'cubicinterp');
yy=feval(fitobject,xx)
Run Code Online (Sandbox Code Playgroud)
具有以下输入:
坐标
x = [...
313 3;
313 5;
313 7;
315 3;
315 5;
317 3;
319 5];
Run Code Online (Sandbox Code Playgroud)
值
y = [...
28.0779;
28.0186;
11.6220;
16.7640;
23.7139;
-14.7882;
-20.4626];
Run Code Online (Sandbox Code Playgroud)
插值点
xx = [...
313 3;
313 4;
313 5;
313 6;
313 7;
313 8;
313 9;
314 3;
314 5;
314 7;
315 3;
315 4;
315 5;
315 6;
315 7;
316 3;
316 5;
317 3;
317 4;
317 5; …Run Code Online (Sandbox Code Playgroud) 我有一个高矩阵(下面的例子是10000乘3000)我想要内部产品的行的子集(例如,500行).对于不同的,随机选择的行重复多次(在该示例中为100次,但实际上多次).事实证明索引A(sub,:)相当慢.在我的例子中,最好乘以整个矩阵A(即10000行),而不是选择性地选择和乘以实际需要的500.
行索引(sub = randperm(10000); sub = sub(1:500);)的随机生成在计算上是便宜的; 我把它放在两个循环中以便公平.
A=randn(10000,3000);
g=zeros(10000,1);
tic
for i=1:100
sub = randperm(10000); sub = sub(1:500);
b=randn(3000,1);
g(sub) = g(sub) + A(sub,:)*b;
end
toc
% elapsed time is 1.58 sec
tic
for i=1:100
sub = randperm(10000); sub = sub(1:500);
b=randn(3000,1);
g = g + A*b;
end
toc
% elapsed time is 1.28 sec
Run Code Online (Sandbox Code Playgroud)
问题是:当实际只需要一部分行时,有没有办法加快速度?
我正在尝试在 Matlab 中生成一组 3D 对象的视图,以便角度发生变化但对象大小保持不变。由于 Matlab 尝试将整个轴放入视图中,因此对象会缩小或增大,具体取决于是从正面还是从某个角度查看绘图。举个例子:
[x,y,z] = sphere(50); % coordinates of a sphere
surf(x,y,z); % plot the sphere
axis image off
view(0,0) % at this angle the sphere fills the axes
view(-37.5,30) % at this angle the sphere is much smaller
Run Code Online (Sandbox Code Playgroud)
如何才能使球体无论从哪个角度观看都显示相同的大小?
我有符号功能的问题.我正在创建自己的函数,其第一个参数是一个字符串.然后我将该字符串转换为符号函数:
f = syms(func)
Run Code Online (Sandbox Code Playgroud)
让我们说我的字符串是sin(x).所以现在我想用它来计算它subs.
a = subs(f, 1)
Run Code Online (Sandbox Code Playgroud)
结果是sin(1)而不是数字.
因为0它正常工作和计算.我应该怎么做才能得到实际的结果,不仅sin(1)还是sin(2)等?
使用Matlab(符号数学工具箱),符号值占用112字节的内存.人们可以通过whos命令看到这一点.
我知道根据IEEE 754标准存储浮点值(在Matlab的数值框架中).因此,使用8个字节(双精度):尾数为52位,符号为1位,指数为11位.
符号数字的存储细节怎么样?使用什么标准?
我写了这段代码来绘制RGB立方体,但是它的颜色不完全正确吗?
%Define a six row by four column matrix to define the six cube faces
fm = [1 2 6 5; 2 3 7 6; 3 4 8 7; 4 1 5 8; 1 2 3 4; 5 6 7 8]
%Define an eight row by three column matrix to define the vertices at which
%the faces meet
vm = [0 0 0; 1 0 0; 1 1 0; 0 1 0; 0 0 1; 1 0 1; 1 1 …Run Code Online (Sandbox Code Playgroud) matlab ×10
3d ×1
distribution ×1
matrix ×1
ode ×1
oop ×1
plot ×1
probability ×1
r ×1
spline ×1
statistics ×1