2015-09-28 55 views
1

編譯我的一個應用程序時,使用R2015b部署的mcc編譯器,3D視圖的旋轉(即在工具欄中使用rotate3D按鈕)現在速度非常慢,這是一個奇怪的問題,而不是在編譯與R2013b完全相同的代碼時。在R2013b或R2015b環境中運行應用程序時,旋轉在兩種情況下都非常流暢/平滑。使用mcc編譯時3D旋轉速度慢R2015b

我想一個更簡單的代碼等同於3D我在我的應用程序:

function [] = TestCompiledRotationR2015b() 
%[ 
    % Create random data 
    azimuths = linspace(0, 359, 360) * pi/180; 
    elevations = linspace(0, 180, 181) * pi/180; 
    [A, E] = ndgrid(azimuths, elevations); 
    Data = sin(7*(E-pi/2))./(7*(E-pi/2)); 
    Data(isnan(Data)) = 1; 
    Data = Data .* abs(cos(0.5*A)); 

    ff = figure(42); 
    X = cos(A) .* sin(E); 
    Y = sin(A) .* sin(E); 
    Z = cos(E); 
    surf(X, Y, Z, abs(Data)); 

    % Set axes properties 
    shading flat; 
    set(gca, 'DataAspectRatio', [1 1 1]); 
    set(gca, 'Visible', 'off'); 
    xlim([-1 1]); 
    ylim([-1 1]); 
    zlim([-1 1]); 

    uiwait(ff); 
%] 

我也試圖與更復雜的一個(使用GUI佈局板和卡,我在我的應用程序中使用了很多)。 ...我記錄了'渲染'的細節,以防萬一(在編譯和非編譯模式下opengl完全硬件加速)......但未能重現我編譯的應用程序中的慢速旋轉。

所以在這裏,我只是想知道,如果你們中的任何嘗試是同一個問題(3D不僅速度慢時R2015b且僅用於某些應用程序編譯)......我覺得有什麼不對,我做的,但爲什麼它在R2013b中工作,爲什麼它在R2015b環境中仍然可用(即未編譯...僅編譯R2015b引起問題)是一個完整的謎團。

**編輯**

我試圖激活探查移動鼠標時約1分鐘兩種編譯和未編譯模式,沒有什麼特別的,除了它在編譯模式(大幅減少刷新率〜160個電話在編制模式與環境模式4100個話費)

Profiler

回答

1

好吧,經過多次試驗,這一切看來,這個問題被鏈接到我正在從專爲C#應用程序的MATLAB代碼的事實在系統托盤中使用:

以下所有測試都ok:

  • 創建可執行直接與mcc -m TestLaunchMyApplication.m
  • 創建csharedlib並從基本的主代碼中調用在C
  • 創建csharedlib,並從基本的C#winform應用程序調用它

只從系統托盤c#app調用'csharedlib'會導致問題。我嘗試設計更簡單的系統托盤應用程序,它工作正常,所以這是沒有人的錯,但我的,並需要修復調用matlab代碼(可能在錯誤的線程或錯誤地接收鼠標事件parented)。

發行已結束。

+0

確認...調用matlab代碼是不是在UI線程...同步解決了這個問題(雖然我不明白爲什麼問題是不可見的R2013b ......無論如何是這樣)。 – CitizenInsane