小编gno*_*ice的帖子

在MATLAB中,如何方便地为函数提供许多参数?

我有一个MATLAB函数myfun(v1,v2,v3,v4,v5,v6)和一个30x6矩阵A.调用该函数的方法是将每列A作为单独的输入参数传递:

myfun(A(:,1),A(:,2),A(:,3),A(:,4),A(:,5),A(:,6))
Run Code Online (Sandbox Code Playgroud)

只是想知道是否有更好的方法来做这个没有明确写出这么多次A(:,*)

matlab arguments input function

4
推荐指数
1
解决办法
2276
查看次数

如何在MATLAB中使用按钮打开浏览器窗口?

我想知道当在GUI中按下按钮时如何连接到互联网站点.例如,如果我按下按钮,则可以弹出浏览器窗口以显示"stackoverflow.com/".

browser matlab user-interface button

4
推荐指数
1
解决办法
3202
查看次数

filter2函数中滤波器矩阵旋转的物理意义

在使用MATLAB 2D滤波器功能filter2(B,X)和卷积功能时conv(X,B,''),我看到该filter2功能本质上是2D卷积,但是旋转了180度的滤波器系数矩阵.在输出方面filter2conv2,我看到下面的关系成立:

 output matrix of filter2 = each element negated of output of conv2
Run Code Online (Sandbox Code Playgroud)

编辑:我不对; 上述关系一般不成立,但我在少数情况下看到过.通常,两个输出矩阵是不相关的,因为在两者中都获得了2个完全不同的内核,这些内核用于卷积.

我理解如何执行2D卷积.我想要理解的是这在图像处理术语中的含义.我如何可视化这里发生的事情?将滤波器系数矩阵旋转180度意味着什么?

matlab filtering matrix convolution

4
推荐指数
1
解决办法
2428
查看次数

尝试在MATLAB中使用parfor(并行for循环)时出错

我正在处理一个非常庞大的矩阵,因此希望在MATLAB中使用并行计算来运行集群.在这里,我使用以下方法创建了一个稀疏矩阵

Ad = sparse(length(con)*length(uni_core), length(con)*length(uni_core));
Run Code Online (Sandbox Code Playgroud)

我有一个书面函数,adj使用它我可以填充矩阵Ad.的循环运行时,都会从功能adj我得到的方形对称矩阵将被分配给Ad3682*(i-1)+13682 *(i-1)+3682在第一索引并且类似地在第二索引.这显示在这里:

parfor i = 1:length(con)
  Ad((3682*(i-1))+1:((3682*(i-1))+3682), ...
     (3682*(i-1))+1:((3682*(i-1))+3682)) = adj(a, b, uni_core);
end
Run Code Online (Sandbox Code Playgroud)

在正常的for循环中,它运行没有任何问题.但在parfor并行计算中,我收到的错误是使用切片数组时出现问题parfor.

parallel-processing matlab loops

4
推荐指数
1
解决办法
1757
查看次数

如何在运行时阻止MATLAB显示.m文件的全部内容?

我有一个小的.m文件,我在MATLAB R2010b中通过F5在编辑器中按下来运行.这是文件:

clear all, close all, clc;
%why are you printing !?
a = 1
c = eye(5);
Run Code Online (Sandbox Code Playgroud)

我希望这个代码在运行时显示以下内容:

a =

     1
Run Code Online (Sandbox Code Playgroud)

但相反它显示了这个:

%why are you printing !?
a = 1

a =

     1

c = eye(5);
Run Code Online (Sandbox Code Playgroud)

如果我从控制台调用该文件,则会发生相同的行为.我无法在互联网上或在MATLAB的控制台设置中找到任何更改此信息.我使用过许多不同版本的MATLAB,这在以前从未发生过.

matlab

4
推荐指数
1
解决办法
2462
查看次数

RGB图像到二进制图像

我想在MATLAB中加载RGB图像并将其转换为二进制图像,我可以在其中选择二进制图像具有多少像素.例如,我将300x300 png/jpg图像加载到MATLAB中,最终得到的二进制图像(像素只能是#000或#FFF)可能是10x10像素.

这是我到目前为止所尝试的:

load trees % from MATLAB
gray=rgb2gray(map); % 'map' is loaded from 'trees'. Convert to grayscale.
threshold=128;
lbw=double(gray>threshold);
BW=im2bw(X,lbw); % 'X' is loaded from 'trees'.
imshow(X,map), figure, imshow(BW)
Run Code Online (Sandbox Code Playgroud)

(我从互联网搜索中得到了一些上述内容.)

在做这个时,我最终得到了一个黑色的图像imshow(BW).

rgb matlab image image-processing

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

计算离散卷积"乘积"的有效方法

我正在寻找一种优雅的方法来计算离散卷积的"乘积",而不是总和.

这是离散卷积的公式:

在此输入图像描述

在这种情况下,我们可以使用: conv(x,y)

现在我想实现这些操作

在此输入图像描述

当然我可以使用一个循环,但我正在寻找一个技巧来线性化这个操作.

例:

f = [2 4 3 9 7 1]
g = [3 2 1]

dist = length(g)-1;

for ii = 1:length(f)-dist
    x(ii) = prod(f(ii:ii+dist).*g)
end
Run Code Online (Sandbox Code Playgroud)

x =

144    648   1134    378
Run Code Online (Sandbox Code Playgroud)

arrays matlab multiplication convolution sliding-window

4
推荐指数
1
解决办法
227
查看次数

将几个小的刚度矩阵放在一起

这是一个微不足道的问题,但我只是从matlab开始,并且还没有习惯他们的思维方式(和语法).

对于那些曾经做过FEM等事情的人来说,我所要求的是显而易见的.

你如何组合几个小的刚度矩阵.比如,你得到(元素1)局部刚度矩阵4x4,(元素2)相同 - 当然只有不同的矩阵,但仍然是4x4.

最简单的方法是什么:

[|--------| 0  0 ]  
[|        | 0  0 ]  
[|     |--|-----|]  
[|-----|--|     |]  
[0  0  |        |]  
[0  0  |--------|]  

(a33+b11, a34+b12,
(a43+b12, a44+b22, ...)
Run Code Online (Sandbox Code Playgroud)

即做一个"大人物"?

matlab matrix

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

MATLAB中RGB图像的3个维度是什么?

[r,c,d] = size(rgbImage);  %# Get the image dimensions
Run Code Online (Sandbox Code Playgroud)

什么是r,c,d站在这里?

matlab image

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

如何使用MATLAB中的“线”或“注释”对象在轴外绘制对象?

我想在MATLAB图中轴外的每个数据点上创建一条带有圆形标记的线,类似于

line([x1 x2],[y1 y2],'Color','k','Marker','o')
Run Code Online (Sandbox Code Playgroud)

会产生。

要将线对象放置在轴外,我只是尝试使用annotation

annotation('line',phi1([x1 x2]),phi2([y1 y2]),'Color','k','Marker','o')
Run Code Online (Sandbox Code Playgroud)

其中phi1phi2是适当的坐标转换,以适合当前图形的坐标xy轴内。

我期望这行得通,因为线对象具有marker属性。但是,通过annotation,我收到以下错误消息:

Error using matlab.graphics.shape.Line/set
There is no Marker property on the Line class.

Error in matlab.graphics.chart.internal.ctorHelper (line 8)
    set(obj, pvpairs{:});

Error in matlab.graphics.shape.Line

Error in annotation (line 128)
        h = matlab.graphics.shape.Line(aargs{:});
Run Code Online (Sandbox Code Playgroud)

同样,用该annotation函数绘制矩形时,不能设置该Curvature属性。似乎annotation不支持这些类型的属性,即使它像linerectangle函数那样创建线或矩形对象。我尝试摆弄注解句柄和子项,但没有成功。

有任何解决方法的想法吗?

matlab plot annotations properties matlab-figure

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