主頁 > 移動端開發 > 子空間方法——MUSIC演算法

子空間方法——MUSIC演算法

2020-10-31 06:55:29 移動端開發

多重信號分類MUSIC演算法

1. MUSIC演算法原理

MUSIC演算法,叫做多信號分類演算法 (Multiple Signal Classification),是一種基于特征結構的高解析度DOA演算法,該演算法利用了信號子空間和噪聲子空間正交性的特點,構造噪聲空間然后通過譜峰搜索來檢測信號的波達方向,需要注意的是,該演算法有一個前提,即各個入射信號之間互不相關,這樣才能保證入射信號的協方差矩陣是滿秩的,

考慮以下這個線陣模型:
線陣模型
X ( t ) X(t) X(t) 是在第 t t t 個快拍觀察到的資料向量,在陣列信號處理和空間譜估計中, X ( t ) = \boldsymbol{X}(t)= X(t)= [ X 1 ( t ) , X 2 ( t ) , ? ? , X N ( t ) ] T \left[X_{1}(t), X_{2}(t), \cdots, X_{N}(t)\right]^{\mathrm{T}} [X1?(t),X2?(t),?,XN?(t)]T N N N 個陣元 (天線或傳感器) 的觀測資料組成,在時域譜估計中,向量 x ( t ) = [ x ( t ) , x ( t ? 1 ) , ? ? , x ( t ? n ? 1 ) ] T \boldsymbol{x}(t)=[x(t), x(t-1), \cdots, x(t-n-1)]^{\mathrm{T}} x(t)=[x(t),x(t?1),?,x(t?n?1)]T 由連續的 n n n 個觀察資料樣本組成,
假定資料向量 X ( t ) \boldsymbol{X}(t) X(t) r r r 個窄帶信號入射到 N N N 個陣元組成的陣列的觀察資料向量或者是 r r r 個不相干的復諧波的疊加,即
X ( t ) = ∑ i = 1 r s i ( t ) a ( ω i ) + v ( t ) = A s ( t ) + n ( t ) \boldsymbol{X}(t)=\sum_{i=1}^{r} s_{i}(t) \boldsymbol{a}\left(\omega_{i}\right)+\boldsymbol{v}(t)=\boldsymbol{A} \boldsymbol{s}(t)+\boldsymbol{n}(t) X(t)=i=1r?si?(t)a(ωi?)+v(t)=As(t)+n(t)式中, A = [ a ( ω 1 ) , ? ? , a ( ω r ) ] \boldsymbol{A}=\left[\boldsymbol{a}\left(\omega_{1}\right), \cdots, \boldsymbol{a}\left(\omega_{r}\right)\right] A=[a(ω1?),?,a(ωr?)] N × r N \times r N×r 陣列流型矩陣, a ( ω i ) = [ 1 , e j ω i , … , e j ( N ? 1 ) ω i ] T \boldsymbol{a}\left(\omega_{i}\right)=\left[1, \mathrm{e}^{\mathrm{j} \omega_{i}}, \ldots, \mathrm{e}^{\mathrm{j}(N-1) \omega_{i}}\right]^{\mathrm{T}} a(ωi?)=[1,ejωi?,,ej(N?1)ωi?]T 為方向向量; s ( t ) = [ s 1 ( t ) , ? ? , s r ( t ) ] T \boldsymbol{s}(t)=\left[s_{1}(t), \cdots, s_{r}(t)\right]^{\mathrm{T}} s(t)=[s1?(t),?,sr?(t)]T 為隨機信號向量,其均值為零向量,協方差矩陣為 R s = E { s ( t ) s H ( t ) } ; \boldsymbol{R}_{\boldsymbol{s}}=\mathrm{E}\left\{\boldsymbol{s}(t) \boldsymbol{s}^{\mathrm{H}}(t)\right\} ; Rs?=E{s(t)sH(t)}; v ( t ) = [ v 1 ( t ) , ? ? , v N ( t ) ] T \boldsymbol{v}(t)=\left[v_{1}(t), \cdots, v_{N}(t)\right]^{\mathrm{T}} v(t)=[v1?(t),?,vN?(t)]T 為加性噪聲向量,其各個分量為高斯白噪聲,它們具有零均值和相同的方差 σ 2 \sigma^{2} σ2 ,在諧波恢復中,引數 ω i \omega_{i} ωi? 為復諧波的頻率 ; 在陣列信號處理中, ω i \omega_{i} ωi? 是一空間引數
ω i = 2 π d λ sin ? θ i \omega_{i}=2 \pi \frac{d}{\lambda} \sin \theta_{i} ωi?=2πλd?sinθi?式中, d d d 為相鄰兩個陣元之間的距離 (假定陣元等間距排列成一直線), λ \lambda λ 為波長, 且 θ i \theta_{i} θi? 表 示第 i i i 個窄帶信號達到陣元的入射方向,簡稱波達方向,
MUSIC演算法要解決的是根據 N N N 個快拍的觀測資料向量 X ( t ) ( t = 1 , 2 , ? ? , N ) \boldsymbol{X}(t)(t=1,2, \cdots, N) X(t)(t=1,2,?,N) 估計 r r r 個引數 ω i ° \omega_{i \circ} ωi°? 這相當于對 r r r 個混合信號進行分類,簡稱多重信號分類,
假定噪聲向量 v ( t ) \boldsymbol{v}(t) v(t) 與信號向量 s ( t ) \boldsymbol{s}(t) s(t) 統計不相關,并令觀測資料向量的協方差矩陣 R x x = E { x ( t ) x H ( t ) } \boldsymbol{R}_{x x}=\mathrm{E}\left\{\boldsymbol{x}(t) \boldsymbol{x}^{\mathrm{H}}(t)\right\} Rxx?=E{x(t)xH(t)} 的特征值分解為
R x x = A R s s A H + σ 2 I = U Σ U H = [ U S , U N ] [ Σ S O O Σ N ] [ U S H U N H ] \boldsymbol{R}_{x x}=\boldsymbol{A R}_{s s} \boldsymbol{A}^{\mathrm{H}}+\sigma^{2} \boldsymbol{I}=\boldsymbol{U} \boldsymbol{\Sigma} \boldsymbol{U}^{\mathrm{H}}=[\boldsymbol{U_S}, \boldsymbol{U_N}]\left[\begin{array}{cc} \boldsymbol{\Sigma_S} & \boldsymbol{O} \\ \boldsymbol{O} & \boldsymbol{\Sigma_N} \end{array}\right]\left[\begin{array}{l} \boldsymbol{U}^{\mathrm{H}}_S \\ \boldsymbol{U}^{\mathrm{H}}_N \end{array}\right] Rxx?=ARss?AH+σ2I=UΣUH=[US?,UN?][ΣS?O?OΣN??][USH?UNH??]式中, R s s = E { s ( t ) s H ( t ) } , \boldsymbol{R}_{s s}=\mathrm{E}\left\{\boldsymbol{s}(t) \boldsymbol{s}^{\mathrm{H}}(t)\right\}, Rss?=E{s(t)sH(t)}, Σ S \boldsymbol{\Sigma_S} ΣS? 包含了 r r r 個大特征值, 它們比 σ 2 \sigma^{2} σ2 明顯大很多, Σ N = σ 2 I n ? r \boldsymbol{\Sigma_N}=\sigma^{2} I_{n-r} ΣN?=σ2In?r?
因此有:
R x x U N = [ U S , U N ] [ Σ S O O Σ N ] [ U S H U N H ] U N = [ U S , U N ] [ Σ S O O Σ N ] [ O I ] = σ 2 U N \boldsymbol{R}_{x x} \boldsymbol{U_N}=[\boldsymbol{U_S}, \boldsymbol{U_N}]\left[\begin{array}{cc} \boldsymbol{\Sigma_S} & \boldsymbol{O} \\ \boldsymbol{O} & \boldsymbol{\Sigma_N} \end{array}\right]\left[\begin{array}{l} \boldsymbol{U}^{\mathrm{H}}_S \\ \boldsymbol{U}^{\mathrm{H}}_N \end{array}\right]\boldsymbol{U_N}=[\boldsymbol{U_S}, \boldsymbol{U_N}]\left[\begin{array}{cc}\boldsymbol{\Sigma_S} & \boldsymbol{O} \\ \boldsymbol{O} & \boldsymbol{\Sigma_N}\end{array}\right]\left[\begin{array}{l}\boldsymbol{O} \\ \boldsymbol{I}\end{array}\right]=\sigma^{2} \boldsymbol{U_N} Rxx?UN?=[US?,UN?][ΣS?O?OΣN??][USH?UNH??]UN?=[US?,UN?][ΣS?O?OΣN??][OI?]=σ2UN?
又由 R x x = A R s s A H + σ 2 I \boldsymbol{R}_{x x}=\boldsymbol{A R}_{s s} \boldsymbol{A}^{\mathrm{H}}+\sigma^{2} \boldsymbol{I} Rxx?=ARss?AH+σ2I R x x U N = A R s s A H U N + σ 2 U N , \boldsymbol{R}_{x x} \boldsymbol{U_N}=\boldsymbol{A R}_{s s} \boldsymbol{A}^{\mathrm{H}} \boldsymbol{U_N}+\sigma^{2} \boldsymbol{U_N}, Rxx?UN?=ARss?AHUN?+σ2UN?,聯立上式可以得到
A R s s A H U N = O \boldsymbol{A R}_{s s} \boldsymbol{A}^{\mathrm{H}} \boldsymbol{U_N}=\boldsymbol{O} ARss?AHUN?=O進而有
U N H A R s s A H U N = O \boldsymbol{U}^{\mathrm{H}}_N \boldsymbol{A R}_{s s} \boldsymbol{A}^{\mathrm{H}} \boldsymbol{U_N}=\boldsymbol{O} UNH?ARss?AHUN?=O
眾所周知, Q \boldsymbol{Q} Q 非奇異時 t H Q t = 0 , \boldsymbol{t}^{\mathrm{H}} \boldsymbol{Q} \boldsymbol{t}=0, tHQt=0, 當且僅當 t = 0 , \boldsymbol{t}=\mathbf{0}, t=0, 故上式成立的充分必要條件是
A H U N = O \boldsymbol{A}^{\mathrm{H}} \boldsymbol{U_N}=\boldsymbol{O} AHUN?=O因為 R s s = E { s ( t ) s H ( t ) } R_{s s}=\mathrm{E}\left\{s(t) s^{\mathrm{H}}(t)\right\} Rss?=E{s(t)sH(t)} 非奇異,將 A = [ a ( ω 1 ) , ? ? , a ( ω p ) ] \boldsymbol{A}=\left[\boldsymbol{a}\left(\omega_{1}\right), \cdots, \boldsymbol{a}\left(\omega_{p}\right)\right] A=[a(ω1?),?,a(ωp?)] 代入上式即有
a H ( ω ) G = 0 T , ω = ω 1 , ω 2 , ? ? , ω p \boldsymbol{a}^{\mathrm{H}}(\omega) \boldsymbol{G}=\mathbf{0}^{\mathrm{T}}, \quad \omega=\omega_{1}, \omega_{2}, \cdots, \omega_{p} aH(ω)G=0T,ω=ω1?,ω2?,?,ωp?顯然, 當 ω ≠ ω 1 , ω 2 , ? ? , ω p \omega \neq \omega_{1}, \omega_{2}, \cdots, \omega_{p} ω?=ω1?,ω2?,?,ωp? 時, a H ( ω ) G ≠ 0 T \boldsymbol{a}^{\mathrm{H}}(\omega) \boldsymbol{G} \neq \mathbf{0}^{\mathrm{T}} aH(ω)G?=0T
將上式改寫成標量形式, 可以定義一種類似于功率譜的函式
P ( ω ) = 1 a H ( ω ) U N U N H a ( ω ) \boldsymbol P(\omega)=\frac{1}{\boldsymbol a^{\mathrm{H}}(\omega) \boldsymbol U_N \boldsymbol U^{\mathrm{H}}_N \boldsymbol a(\omega)} P(ω)=aH(ω)UN?UNH?a(ω)1?由于噪聲的影響, a H ( ω ) U N U N H a ( ω ) ≠ 0 \boldsymbol{a}^{\mathrm{H}}(\omega) \boldsymbol{U_N} \boldsymbol{U}^{\mathrm{H}}_N \boldsymbol{a}(\omega)\neq0 aH(ω)UN?UNH?a(ω)?=0,而是一個很小的數,因此此時的 P ( ω ) \boldsymbol P(\omega) P(ω)是一個極大值,對上式取峰值的 r r r ω \omega ω ω 1 , ω 2 , ? ? , ω r \omega_{1}, \omega_{2}, \cdots, \omega_{r} ω1?,ω2?,?,ωr? 給出 r r r 個信號的波達方向 θ 1 , θ 2 , ? ? , θ r \theta_{1}, \theta_{2}, \cdots, \theta_{r} θ1?,θ2?,?,θr?
同時在實際應用中,接收陣接收到的資料有限長,我們可以通過這些接收資料估計入射信號的協方差矩陣,達到極大似然估計的目的,假設有M個快拍snapshot,則有
R ^ x x = 1 M ∑ i = 1 M x i x i H \hat{R}_{xx}=\frac{1}{M} \sum_{i=1}^{M} x_{i} x_{i}^{H} R^xx?=M1?i=1M?xi?xiH?然后對協方差矩陣 R ^ x x \hat{R}_{xx} R^xx?進行特征值分解:
R ^ x x = U Σ U H \begin{aligned} \hat{R}_{xx} &={U} \Sigma{U}^{H} \end{aligned} R^xx??=UΣUH?特征值分解后按照特征值的大小(從大到小)對特征向量進行重排,接下來就是要確定噪聲子空間,假設排序后的特征值 σ 1 2 ? σ 2 2 ? ? ? σ r 2 ? σ r + 1 2 ? ? ? σ N 2 \sigma_{1}^{2} \geqslant \sigma_{2}^{2} \geqslant \cdots \geqslant \sigma_{r}^{2} \geqslant \sigma_{r+1}^{2}\geqslant \cdots \geqslant \sigma_{N}^{2} σ12??σ22????σr2??σr+12????σN2?,接收信號總能量定義為 P = σ 1 2 + σ 2 2 + ? + σ N 2 P=\sigma_{1}^{2}+\sigma_{2}^{2}+\cdots+\sigma_{N}^{2} P=σ12?+σ22?+?+σN2?根據能量準則,如果J是滿足下式的最小整數: σ 1 2 + σ 2 2 + ? + σ J 2 P ? 0.95 或 0.9 \frac{\sigma_{1}^{2}+\sigma_{2}^{2}+\cdots+\sigma_{J}^{2}}{P}\geqslant0.95或0.9 Pσ12?+σ22?+?+σJ2???0.950.9那么 { σ J + 1 2 , σ J + 2 2 ? ? , σ N 2 } \{\sigma_{J+1}^{2},\sigma_{J+2}^{2}\cdots,\sigma_{N}^{2}\} {σJ+12?,σJ+22??,σN2?}對應的特征向量組成的空間 U N ^ \hat{U_N} UN?^?即為噪聲子空間,

然后就可以用 P ( ω ) = 1 a H ( ω ) U ^ N U ^ N H a ( ω ) \boldsymbol P(\omega)=\frac{1}{\boldsymbol a^{\mathrm{H}}(\omega) \boldsymbol {\hat U_N} \boldsymbol {\hat U^{\mathrm{H}}_N} \boldsymbol a(\omega)} P(ω)=aH(ω)U^N?U^NH?a(ω)1?進行譜峰搜索,尋找r個入射信號的來波方向,

2. MATLAB仿真代碼

% Code For Music Algorithm
% Author:癢羊羊
% Date:2020/10/28

clc; clear all; close all;
%% -------------------------initialization-------------------------
f = 500;                                        % frequency
c = 1500;                                       % speed sound
lambda = c/f;                                   % wavelength
d = lambda/2;                                   % array element spacing
M = 10;                                         % number of array elements
N = 100;                                        % number of snapshot
K = 6;                                          % number of sources
doa_phi = [-30, 0, 20, 40, 60, 75];             % direction of arrivals

%% generate signal
dd = (0:M-1)'*d;                                % distance between array elements and reference element
A = exp(-1i*2*pi*dd*sind(doa_phi)/lambda);      % manifold array, M*K
S = sqrt(2)\(randn(K,N)+1i*randn(K,N));         % array of random signal, K*N
X = A*S;                                        % received data without noise, M*N
X = awgn(X,10,'measured');                      % received data with SNR 10dB

%% calculate the covariance matrix of received data and do eigenvalue decomposition
Rxx = X*X'/N;                                   % covariance matrix
[U,V] = eig(Rxx);                               % eigenvalue decomposition
V = diag(V);                                    % vectorize eigenvalue matrix
[V,idx] = sort(V,'descend');                    % sort the eigenvalues in descending order
U = U(:,idx);                                   % reset the eigenvector
P = sum(V);                                     % power of received data
P_cum = cumsum(V);                              % cumsum of V

%% define the noise space
J = find(P_cum/P>=0.95);                        % or the coefficient is 0.9
J = J(1);                                       % number of principal component
Un = U(:,J+1:end);

%% music for doa; seek the peek
theta = -90:0.1:90;                             % steer theta
doa_a = exp(-1i*2*pi*dd*sind(theta)/lambda);    % manifold array for seeking peak
music = abs(diag(1./(doa_a'*(Un*Un')*doa_a)));  % the result of each theta
music = 10*log10(music/max(music));             % normalize the result and convert it to dB

%% plot
figure;
plot(theta, music, 'linewidth', 2);
title('Music Algorithm For Doa', 'fontsize', 16);
xlabel('Theta(°)', 'fontsize', 16);
ylabel('Spatial Spectrum(dB)', 'fontsize', 16);
grid on;

運行結果:

在這里插入圖片描述

可以看到,入射信號互不相關時,傳統MUSIC演算法能夠以高解析度檢測出6個源的大致波達方向,分別是-29.7°,0°,19.8°,39.8°,60.4°,74.7°,但仍存在估計精度的問題,有很多改進的MUSIC演算法可以改善,
需要注意,陣元數目為M的半波長均勻線陣的自由度為DOF為M-1,表示該線陣最多可以分辨源的數目為M-1,同時若存在相干源,MUSIC演算法的效果就會不理想,基于相干源的MUSIC演算法會在后續文章詳寫,

部分MUSIC演算法原理參考張賢達先生的《矩陣分析與應用》,
歡迎轉載,表明出處,

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/196445.html

標籤:其他

上一篇:Windows 版本的 Webrtc 的編譯 ( 基于聲網鏡像 )

下一篇:MATLAB計算信號的過零率

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【從零開始擼一個App】Dagger2

    Dagger2是一個IOC框架,一般用于Android平臺,第一次接觸的朋友,一定會被搞得暈頭轉向。它延續了Java平臺Spring框架代碼碎片化,注解滿天飛的傳統。嘗試將各處代碼片段串聯起來,理清思緒,真不是件容易的事。更不用說還有各版本細微的差別。 與Spring不同的是,Spring是通過反射 ......

    uj5u.com 2020-09-10 06:57:59 more
  • Flutter Weekly Issue 66

    新聞 Flutter 季度調研結果分享 教程 Flutter+FaaS一體化任務編排的思考與設計 詳解Dart中如何通過注解生成代碼 GitHub 用對了嗎?Flutter 團隊分享如何管理大型開源專案 插件 flutter-bubble-tab-indicator A Flutter librar ......

    uj5u.com 2020-09-10 06:58:52 more
  • Proguard 常用規則

    介紹 Proguard 入口,如何查看輸出,如何使用 keep 設定入口以及使用實體,如何配置壓縮,混淆,校驗等規則。

    ......

    uj5u.com 2020-09-10 06:59:00 more
  • Android 開發技術周報 Issue#292

    新聞 Android即將獲得類AirDrop功能:可向附近設備快速分享檔案 谷歌為安卓檔案管理應用引入可安全隱藏資料的Safe Folder功能 Android TV新主界面將顯示電影、電視節目和應用推薦內容 泄露的Android檔案暗示了傳說中的谷歌Pixel 5a與折疊屏新機 谷歌發布Andro ......

    uj5u.com 2020-09-10 07:00:37 more
  • AutoFitTextureView Error inflating class

    報錯: Binary XML file line #0: Binary XML file line #0: Error inflating class xxx.AutoFitTextureView 解決: <com.example.testy2.AutoFitTextureView android: ......

    uj5u.com 2020-09-10 07:00:41 more
  • 根據Uri,Cursor沒有獲取到對應的屬性

    Android: 背景:呼叫攝像頭,拍攝視頻,指定保存的地址,但是回傳的Cursor檔案,只有名稱和大小的屬性,沒有其他諸如時長,連ID屬性都沒有 使用 cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATIO ......

    uj5u.com 2020-09-10 07:00:44 more
  • Android連載29-持久化技術

    一、持久化技術 我們平時所使用的APP產生的資料,在記憶體中都是瞬時的,會隨著斷電、關機等丟失資料,因此android系統采用了持久化技術,用于存盤這些“瞬時”資料 持久化技術包括:檔案存盤、SharedPreference存盤以及資料庫存盤,還有更復雜的SD卡記憶體儲。 二、檔案存盤 最基本存盤方式, ......

    uj5u.com 2020-09-10 07:00:47 more
  • Android Camera2Video整合到自己專案里

    背景: Android專案里呼叫攝像頭拍攝視頻,原本使用的 MediaStore.ACTION_VIDEO_CAPTURE, 后來因專案需要,改成了camera2 1.Camera2Video 官方demo有點問題,下載后,不能直接整合到專案 問題1.多次拍攝視頻崩潰 問題2.雙擊record按鈕, ......

    uj5u.com 2020-09-10 07:00:50 more
  • Android 開發技術周報 Issue#293

    新聞 谷歌為Android TV開發者提供多種新功能 Android 11將自動填表功能整合到鍵盤輸入建議中 谷歌宣布Android Auto即將支持更多的導航和數字停車應用 谷歌Pixel 5只有XL版本 搭載驍龍765G且將比Pixel 4更便宜 [圖]Wear OS將迎來重磅更新:應用啟動時間 ......

    uj5u.com 2020-09-10 07:01:38 more
  • 海豚星空掃碼投屏 Android 接收端 SDK 集成 六步驟

    掃碼投屏,開放網路,獨占設備,不需要額外下載軟體,微信掃碼,發現設備。支持標準DLNA協議,支持倍速播放。視頻,音頻,圖片投屏。好點意思。還支持自定義基于 DLNA 擴展的操作動作。好像要收費,沒體驗。 這里簡單記錄一下集成程序。 一 跟目錄的build.gradle添加私有mevan倉庫 mave ......

    uj5u.com 2020-09-10 07:01:43 more
最新发布
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:40:31 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:40:11 more
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:39:36 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:39:13 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:16:23 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:16:15 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:15:46 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:14:53 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:14:08 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:08:34 more